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 相关文章推荐
jQuery 全选效果实现代码
Mar 23 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
May 11 Javascript
JS模拟自动点击的简单实例
Aug 08 Javascript
JS实现遮罩层效果的简单实例
Nov 12 Javascript
js实现仿爱微网两级导航菜单效果代码
Aug 31 Javascript
jQuery如何获取动态添加的元素
Jun 24 Javascript
详解Jquery的事件操作和文档操作
Dec 19 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
vue添加class样式实例讲解
Feb 12 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
Apr 09 Javascript
探索node之事件循环的实现
Oct 30 Javascript
JavaScript ES 模块的使用
Nov 12 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读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
js身份证验证超强脚本
2008/10/26 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
url地址自动加#号问题说明
2010/08/21 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
python机器人行走步数问题的解决
2018/01/29 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
pyqt5中动画的使用详解
2020/04/01 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
行政助理工作职责范本
2014/03/04 职场文书
小学一年级学生评语
2014/04/22 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
林肯就职演讲稿
2014/05/19 职场文书
新闻发布会策划方案
2014/06/12 职场文书
医学生求职信
2014/07/01 职场文书
2015年组织部工作总结
2015/04/03 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫