用canvas显示验证码的实现


Posted in HTML / CSS onApril 10, 2020

最近做了一个小需求,就是点击删除按钮,弹出提示弹框让你输入验证码确认删除。

那么怎么显示从后台获取的验证码供用户输入呢?我在理解需求时还以为是后台直接把验证码发到用户的手机上 然后让其输入,其实不然,我理解错了,应该用 canvas 把验证码画出来。

理解需求之后我扒着有验证码的网址看,开始 canvas 画图之旅。

技术栈: quasar (基于vue的一种框架) / canvas

点击删除按钮,触发弹框弹出

用canvas显示验证码的实现

弹框为什么会弹出呢? 因为点击删除按钮,触发 handleAddDialogOpened 事件,使得data里面的 addDialogOpened 由false变成true,弹框就由之前的不显示变成显示啦。

如图代码是弹框代码:其中 canvas 标签上的 ref 是多余的,抱歉呐,忘记删掉了

用canvas显示验证码的实现 

data 里面定义的数据:定义 canvas 画布的宽高

verifyCode_ 绑定用户输入input框的验证码

用canvas显示验证码的实现 

computed 计算属性里面 mapState 映射 verifyCode 数据, mapState 是辅助函数,用于帮助我们简化生成计算属性,不懂的可以扒着 vuex 的官网瞅瞅

用canvas显示验证码的实现 

mapActions 也是辅助函数,用于将组件的方法映射为 store.dispatch

getVerifyCode 就是向后台获取验证的请求方法

用canvas显示验证码的实现 

canvasclick 方法用于 当用户辨认不清验证码,或者输入错误重新输入时,点击 换一个 即可更新验证码(此时要重新从后台获取验证码) 后台小哥哥不打烊呐~~~

用canvas显示验证码的实现 

核心代码: drawPic() 方法就是画验证码的核心方法

1 获取画布标签 使用 getElementById 原生获取 dom

2 使用 .getContext('2d') 准备画布 .textBaseline 定义画布描绘的基线

3 绘制背景

4 绘制验证码

5 绘制干扰视觉的线和点

用canvas显示验证码的实现 

drawText() 绘制验证码的方法

用canvas显示验证码的实现 

drawLine() 绘制干扰线的方法

用canvas显示验证码的实现 

drawDot() 绘制干扰点的方法

用canvas显示验证码的实现 

定义弹框弹出的方法以及删除的方法, 回归需求 ,到此这个需求就完成了 可以和后台联调,没啥问题就可提交代码啦

用canvas显示验证码的实现 

总结:

a. 遇到没有做过的需求,要去看看别人怎么做的,目前还没有难到要你自己创新,没有任何类比的代码

b. 善于使用debugger调试代码,看看自己代码那里出了问题,有bug不要慌,喝口水,去debugger打断点深入理解代码执行逻辑,效率解决

c. 作为社畜大军的一员,要自律, 要输出 ,要锻炼,有时间还要看看代码大全,地铁上撸撸MDN文档,扎实js, 期待那个你想成为的你, 共勉

到此这篇关于用canvas显示验证码的实现的文章就介绍到这了,更多相关canvas显示验证码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
详解CSS3伸缩布局盒模型Flex布局
Aug 20 HTML / CSS
CSS3 clip-path 用法介绍详解
Mar 01 HTML / CSS
CSS3教程:background-clip和background-origin
Oct 17 HTML / CSS
CSS实现的一闪而过的图片闪光效果
Apr 23 HTML / CSS
CSS3动画animation实现云彩向左滚动
May 09 HTML / CSS
纯CSS3制作漂亮带动画效果的主机价格表
Apr 25 HTML / CSS
老生常谈CSS中的长度单位
Jun 27 HTML / CSS
HTML5 canvas基本绘图之绘制矩形
Jun 27 HTML / CSS
HTML5 Canvas API中drawImage()方法的使用实例
Mar 25 HTML / CSS
html5构建触屏网站之网站尺寸探讨
Jan 07 HTML / CSS
HTML5中的网络存储实现方式
Apr 28 HTML / CSS
css中:last-child不生效的解决方法
Aug 05 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
Apr 08 #HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
Apr 08 #HTML / CSS
HTML5 textarea高度自适应的两种方案
Apr 08 #HTML / CSS
html5给汉字加拼音加进度条的实现代码
Apr 07 #HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
Apr 07 #HTML / CSS
HTML5拖放API实现自动生成相框功能
Apr 07 #HTML / CSS
canvas绘制树形结构可视图形的实现
Apr 03 #HTML / CSS
You might like
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
php中取得文件的后缀名?
2012/02/20 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
2020/02/10 PHP
PHP强制转化的形式整理
2020/05/22 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
input的focus方法使用
2010/03/13 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
日常整理python执行系统命令的常见方法(全)
2015/10/22 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
python的slice notation的特殊用法详解
2019/12/27 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
农林经济管理专业自荐信
2014/09/01 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL