用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 相关文章推荐
HTML5和CSS3让网页设计提升到下一个高度
Aug 14 HTML / CSS
css3背景图片透明叠加属性cross-fade简介及用法实例
Jan 08 HTML / CSS
CSS3属性background-size使用指南
Dec 09 HTML / CSS
基于HTML5 Canvas 实现弹出框效果
Jun 05 HTML / CSS
你可能不熟练的十个前端HTML5经典面试题
Jul 03 HTML / CSS
前端canvas动画如何转成mp4视频的方法
Jun 17 HTML / CSS
吃透移动端 Html5 响应式布局
Dec 16 HTML / CSS
HTML5录音实践总结(Preact)
May 07 HTML / CSS
使用SVG实现提示框功能的示例代码
Jun 05 HTML / CSS
canvas小画板之平滑曲线的实现
Aug 12 HTML / CSS
html+css实现赛博朋克风格按钮
May 26 HTML / CSS
深入理解CSS 中 transform matrix矩阵变换问题
Aug 30 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
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
php三元运算符知识汇总
2015/07/02 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
一个javascript图片阅览组件
2010/11/09 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
安装python及pycharm的教程图解
2019/10/10 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
Python logging模块handlers用法详解
2020/08/14 Python
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
《值日生》教学反思
2014/02/17 职场文书
终止劳动合同协议书
2014/04/14 职场文书
教师节宣传方案
2014/05/23 职场文书
个人自查自纠材料
2014/10/14 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL
使用JS实现简易计算器
2021/06/14 Javascript
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript
Python字符串格式化方式
2022/04/07 Python