一,啥是canvas
canvas画图是HTML5新特性其中的一个。
画布是一个矩形区域,你可以控制其每一像素。
canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法
浏览器支持:
Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 支持 canvas 元素.
注意: Internet Explorer 8 及更早 IE 版本的浏览器不支持 canvas元素
二,功能实现
1.创建画布,(canvas)简单实例如下:
![2179210c6bfb08ac67ced75876f7e46c.png](https://img-blog.csdnimg.cn/img_convert/2179210c6bfb08ac67ced75876f7e46c.png)
在HTML中可以使用多个canvas,也可以使用style也设置样式
划重点:宽高是不能通过样式来设定的,只能通过属性和JS程序设置
2.JS中获取canvas对象,和画笔对象
![a076c96f91f28cd28076d50e2673ee75.png](https://img-blog.csdnimg.cn/img_convert/a076c96f91f28cd28076d50e2673ee75.png)
3.进入正题(实现2D验证码)
首先要声明变量来保存所有的字符
![a5df0549ee1fb8ef23ee6cafe332930a.png](https://img-blog.csdnimg.cn/img_convert/a5df0549ee1fb8ef23ee6cafe332930a.png)
4.声明生成随机数的函数(随机数不重复)
由于一段代码要反复使用,所有就将他们封装在一个函数中
![ef8b9d6fc9ff2626044b35a921f27ad8.png](https://img-blog.csdnimg.cn/img_convert/ef8b9d6fc9ff2626044b35a921f27ad8.png)
注意:要将取出的随机数return
5.声明生成干扰线的函数
//要画线了,让线好看一点,那就随机的颜色吧
![e243f5f04f6dd0061a479b5df7e99993.png](https://img-blog.csdnimg.cn/img_convert/e243f5f04f6dd0061a479b5df7e99993.png)
//下面是画线的函数
![a7737f8e270ba645358bdd0dbbb4bcbf.png](https://img-blog.csdnimg.cn/img_convert/a7737f8e270ba645358bdd0dbbb4bcbf.png)
6.最后声明生成验证码的函数,想要验证码,调用这个函数就OK了
![e24e3be627b621756e4def1225e8ad2f.png](https://img-blog.csdnimg.cn/img_convert/e24e3be627b621756e4def1225e8ad2f.png)
好了,效果大概就是这样的
![7cd409b57f6ef8be6bdc7d7580d55bbf.png](https://img-blog.csdnimg.cn/img_convert/7cd409b57f6ef8be6bdc7d7580d55bbf.png)
最后想要验证是否正确,将用户输入的code,和最后str比较就行了
比较的时候注意 str.toLowerCase()或者 str.toUpperCase()哈!
希望对大家有帮助!