canvas教程

JS+canvas生成验证码

字号+ 作者:H5之家 来源:H5之家 2017-07-19 18:04 我要评论( )

Js自制的一个图片验证码,实际是用canvas画的,安全系统不高,仅提供学习思

JS+canvas生成验证码

Js自制的一个图片验证码,实际是用canvas画的,安全系统不高,仅提供学习思

JS+canvas生成验证码

效果点击这里代码如下:

<!doctype html> <html> <head> <meta charset="utf-8"> <title>JS+canvas生成验证码</title> <meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <style> body,input,button,div { padding: 0; margin: 0;} body { overflow: hidden;} div { width:400px; margin: 100px auto;} input { padding: 10px; width: 100px;} button { height: 40px; padding: 0 10px;} canvas { width: 100px; height: 40px; position: relative; top: 15px;} </style> </head> <body> <div> <canvas></canvas> <input type="text" /> <button type="button">点击验证</button> </div> <script> //初始化 var code; //获取选择器 var $canvas = document.getElementById("canvas"); var $input = document.getElementById("input"); var $button = document.getElementById("button"); //生成code function createCode(){ //canvas准备中 var ctx = $canvas.getContext('2d'); var width = $canvas.width; var height = $canvas.height; //清空画布 ctx.clearRect(0,0,width,height); //上背景色 ctx.fillStyle="#f2f2f2"; ctx.fillRect(0,0,width,height); ctx.fillStyle="#3297fd"; //初始化翻转值 var flip = 1; ctx.font="italic bolder 20px 'Arial'"; //清空code code = ""; //验证码的长度 var codeLength = 6; //所有候选组成验证码的字符,当然也可以用中文的 var codeChars = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); //在数组中任意选择6个字 for(var i = 0; i < codeLength; i++){ //获取数组中随机一个字 var charNum = Math.round( Math.random() * (codeChars.length-1) ); //将code累加 code += codeChars[charNum]; //描绘canvas //翻转正负用于计算rotate flip = i%2?-1:1; ctx.save(); ctx.rotate(Math.round(3*Math.random())*flip*Math.PI/180); ctx.fillText(codeChars[charNum],(width * (0.1+0.14*i)),22+Math.round(8*Math.random())); ctx.restore(); } } //默认执行一次-刷新检验码 createCode() //绑定按钮点击事件 $button.onclick = function(){ //获取input的值 var $value = $input.value; //判断input值与code值是否一致[不区分大小写-对比时一致大写] if($value.toUpperCase() === code.toUpperCase()){ alert('验证码正确'); }else{ //不一致,刷新验证码 console.log('验证码不正确'); createCode(); } } //点击canvas刷新 $canvas.onclick = createCode; </script> </body> </html>

项目demo上面想放个图片验证码,结合前人的例子时,因为code直接从DOM上面就能看到,所以自己添加了canvas,加强了一下。

虽然也可以直接在控制台打印出来,但是也没有办法了。不过这种思路感觉还是可以看看的。

其中在画canvas的时候rotate旋转时,添加了save()和restore(),这个可以保存(save)rotate之前的状态,并在合适的时候还原(restore)之前备份的状态。感觉挺好用的~

文章TAG:Js

2017.02.09作者:井井客原创来源:原创
本文标题:JS+canvas生成验证码
本文链接:

上一篇:vue2下拉刷新实例
下一篇:commit(vuex)将vue中定义的对象/数组传参需要注意

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • canvas上纯JS实现可滑动时间刻度轴

    canvas上纯JS实现可滑动时间刻度轴

    2017-07-19 10:03

  • js应用:使用canvas给图片加水印

    js应用:使用canvas给图片加水印

    2017-07-16 18:01

  • JSP_strut2架构下前台使用canvas对接收到的后台数据画图的一种

    JSP_strut2架构下前台使用canvas对接收到的后台数据画图的一种

    2017-07-16 17:15

  • processingjs学习系列之一 processingjs,通过该框架可以直接将p

    processingjs学习系列之一 processingjs,通过该框架可以直接将p

    2017-07-16 09:01

网友点评
h