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 24 Javascript
JS 文件本身编码转换 图文教程
Oct 12 Javascript
编写高效jQuery代码的4个原则和5个技巧
Apr 24 Javascript
自写的jQuery异步加载数据添加事件
May 15 Javascript
Jquery实现瀑布流布局(备有详细注释)
Jul 31 Javascript
jQuery实现动画效果circle实例
Aug 06 Javascript
轮播的简单实现方法
Jul 28 Javascript
AngularJS中的DOM操作用法分析
Nov 04 Javascript
AngularJS路由Ui-router模块用法示例
May 29 Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 Javascript
在vue中使用防抖函数组件操作
Jul 26 Javascript
详解JavaScript自定义函数
Jul 29 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/09/04 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
JavaScript this调用规则说明
2010/03/08 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
JS简单实现城市二级联动选择插件的方法
2015/08/19 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
2017/06/30 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
python多重继承实例
2014/10/11 Python
Python中optparse模块使用浅析
2015/01/01 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
大学生专科毕业生自我评价
2013/11/17 职场文书
应届生法律顾问求职信
2013/11/19 职场文书
结婚邀请函范文
2014/01/14 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
详解Oracle块修改跟踪功能
2021/11/07 Oracle
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技