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 数值型和字符串型之间的转换
Jul 25 Javascript
JavaScript 变量命名规则
Sep 23 Javascript
js下将字符串当函数执行的方法
Jul 13 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
Jul 15 Javascript
jquery的map与get方法详解
Nov 04 Javascript
Jquery修改页面标题title其它JS失效的解决方法
Oct 31 Javascript
jquery select2的使用心得(推荐)
Dec 04 Javascript
vue 打包后的文件部署到express服务器上的方法
Aug 09 Javascript
Vue2.0 v-for filter列表过滤功能的实现
Sep 07 Javascript
vue elementUI tree树形控件获取父节点ID的实例
Sep 12 Javascript
AngularJS 多指令Scope问题的解决
Oct 25 Javascript
JS实现九宫格拼图游戏
Jun 28 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
第二节 对象模型 [2]
2006/10/09 PHP
php基础知识:控制结构
2006/12/13 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
微信支付的开发流程详解
2016/09/13 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
python写入已存在的excel数据实例
2018/05/03 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
python实现图像外边界跟踪操作
2020/07/13 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
2016/01/20 HTML / CSS
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
医学毕业生自荐信
2013/10/11 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
小学生学习保证书
2015/02/26 职场文书
文明礼仪倡议书
2015/04/28 职场文书
2016银行招聘自荐信
2016/01/28 职场文书