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 相关文章推荐
javaScript - 如何引入js代码
Mar 09 Javascript
MooBox 基于Mootools的对话框插件
Jan 20 Javascript
javascript中with()方法的语法格式及使用
Aug 04 Javascript
JavaScript中的style.cssText使用教程
Nov 06 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
Mar 01 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
Mar 25 Javascript
JS代码实现根据时间变换页面背景效果
Jun 16 Javascript
angularJS 如何读写缓冲的方法(推荐)
Aug 06 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
Apr 13 Javascript
bootstrap confirmation按钮提示组件使用详解
Aug 22 Javascript
浅析微信扫码登录原理(小结)
Oct 29 Javascript
vue项目每30秒刷新1次接口的实现方法
Dec 04 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
使用数据库保存session的方法
2006/10/09 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
深入认识javascript中的eval函数
2009/11/02 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
如何使用VuePress搭建一个类型element ui文档
2019/02/14 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
Python获取远程文件大小的函数代码分享
2014/05/13 Python
用Python中的字典来处理索引统计的方法
2015/05/05 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
资源环境与城市管理专业推荐信
2013/11/30 职场文书
酒吧副总经理岗位职责
2013/12/10 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
法定代表人资格证明书
2014/09/11 职场文书
党建工作整改措施
2014/10/28 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
交心谈心活动总结
2015/05/11 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书
python批量创建变量并赋值操作
2021/06/03 Python
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android