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 相关文章推荐
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
js动态添加删除,后台取数据(示例代码)
Nov 25 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
Jun 26 Javascript
JS显示表格内指定行html代码的方法
Mar 31 Javascript
jQuery EasyUI Dialog拖不下来如何解决
Sep 28 Javascript
自己封装的一个原生JS拖动方法(推荐)
Nov 22 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
Node.js console控制台简单用法分析
Jan 04 Javascript
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 Javascript
JS代码触发事件代码实例
Jan 02 Javascript
JS原型prototype和__proto__用法实例分析
Mar 14 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
重置版宣传动画
2020/04/09 魔兽争霸
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
PHP编程风格规范分享
2014/01/15 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
react的hooks的用法详解
2020/10/12 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
python基础练习之几个简单的游戏
2017/11/10 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
树莓派升级python的具体步骤
2020/07/05 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
数字天堂软件测试面试题
2012/12/23 面试题
自荐信封面
2013/12/04 职场文书
护士自荐信范文
2013/12/15 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
奥利奥广告词
2014/03/20 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
高中体育课教学反思
2016/02/16 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS