JavaScript生成随机验证码代码实例


Posted in Javascript onSeptember 28, 2019

利用canvas制作一个随机验证码:

1、clearRect:context.clearRect(x,y,width,height);清空给定矩形内的指定像素

2、fillStyle:设置画笔的颜色

3、rotate(deg):旋转角度,以弧度旋转(弧度=degrees*Math.PI/180 )

4、translate(): 方法重新映射画布上的位置

5、Math.random():获取0-1之间的一个随机数,不包含1

JavaScript生成随机验证码代码实例

<!-- HTML -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>canvas随机验证码</title>
  </head>
  <body>
    <canvas id="canvas" width="100" height="40" style="border: 1px solid red;display: block;margin: 0 auto;"></canvas>
  </body>
  <script type="text/javascript">
    var myCanvas = document.querySelector("#canvas");
    var blur = myCanvas.getContext("2d");
    // 当点击画布时创建一个新的路径
    // 验证码封装
    myCanvas.onclick = function() {
      // 实现点击画布创建一个新的验证码
      blur.clearRect(0,0,100,40);
      verify();
    }
    verify();
    function verify() {
      // 绘制矩形框
      // blur.strokeRect(0,0,100,40);
      // 随机验证码
      var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "s", "t", "u",
        "v", "w", "x", "y", "z", "A", "B", "C", "D", "F", "G", "H", "I", "J", "K", "L", "S", "T", "U", "V", "W", "X", "Y",
        "Z"
      ];
      // 显示四位数的验证码
      for (var i = 0; i < 4; i++) {
        var x = 20 + 20 * i;
        var y = 20 + 10 * Math.random();
        // console.log(x,y);
        // 在数组中获取到随机的索引整数
        var index = Math.floor(Math.random() * arr.length);
        // 通过随机的索引获取到随机的元素
        var texts = arr[index];
        // 设置验证码的相关样式
        blur.font = "bold 20px 微软雅黑";
        blur.fillStyle = textColor();
        // 画布旋转显示
        // translate() 方法重新映射画布上的位置
        blur.translate(x, y);
        // 将画布旋转,旋转角度,以弧度旋转(弧度=degrees*Math.PI/180 )
        var deg = 90 * Math.random() * Math.PI / 180;
        blur.rotate(deg); //
        blur.fillText(texts, 0, 0);
        // 将画布映射返回原来的位置
        blur.rotate(-deg);
        blur.translate(-x, -y);
      }
      
      // 制作验证码的干扰线制作
      for(var i=0;i<6;i++){
        blur.beginPath();
        blur.moveTo(Math.random()*100,Math.random()*40);
        blur.lineTo(Math.random()*100,Math.random()*40);
        // 设置干扰线的颜色
        blur.strokeStyle=textColor();
        blur.stroke();
      }
      // 制作验证码的干扰圆点
      for(var i=0;i<20;i++){
        blur.beginPath();
        var x=Math.random()*100;
        var y=Math.random()*100;
        blur.moveTo(x,y);
        blur.lineTo(x+1,y+1);
        // 设置干扰线的颜色
        blur.strokeStyle=textColor();
        blur.stroke();
      }
    }
    // 获取随机颜色封装
    function textColor(){
      var red=Math.floor(Math.random()*256);
      var green=Math.floor(Math.random()*256);
      var blue=Math.floor(Math.random()*256);
      return "rgb("+red+","+green+","+blue+")";
    }
  </script>
</html>

x 要清除的矩形左上角的 x 坐标
y 要清除的矩形左上角的 y 坐标
width 要清除的矩形的宽度,以像素计
height 要清除的矩形的高度,以像素计

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
解密效果
Jun 23 Javascript
本地对象Array的原型扩展实现代码
Dec 04 Javascript
简单实用的全选反选按钮例子
Oct 18 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
Mar 22 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
Feb 25 Javascript
javascript实现滚动效果的数字时钟实例
Jul 21 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 Javascript
JS中去掉array中重复元素的方法
May 26 Javascript
ES6新增的math,Number方法
Aug 06 Javascript
Three.js如何实现雾化效果示例代码
Sep 27 Javascript
vue.js 获取select中的value实例
Mar 01 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
laydate只显示时分 不显示秒的功能实现方法
Sep 28 #Javascript
layui时间控件选择时间范围的实现方法
Sep 28 #Javascript
layui table 表格上添加日期控件的两种方法
Sep 28 #Javascript
Layui选项卡制作历史浏览记录的方法
Sep 28 #Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
Sep 28 #Javascript
layui的select联动实现代码
Sep 28 #Javascript
关于layui的下拉搜索框异步加载数据的解决方法
Sep 28 #Javascript
You might like
php中的常用魔术方法总结
2013/08/02 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
JS的encodeURI和java的URLDecoder.decode使用介绍
2014/05/08 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
python中的sort方法使用详解
2014/07/25 Python
python的即时标记项目练习笔记
2014/09/18 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
详解CSS3原生支持div铺满浏览器的方法
2018/08/30 HTML / CSS
Python里面search()和match()的区别
2016/09/21 面试题
临床医学专业个人的自我评价
2013/09/27 职场文书
关于赌博的检讨书
2014/01/24 职场文书
借款协议书
2014/04/12 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
公司庆典主持词
2015/07/04 职场文书
校运会班级霸气口号
2015/12/24 职场文书
施工安全责任协议书
2016/03/23 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
Python 数据科学 Matplotlib图库详解
2021/07/07 Python