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基础教程之while语句
Jan 18 Javascript
javascript弹出窗口实现代码
Nov 12 Javascript
javascript给span标签赋值的方法
Nov 26 Javascript
JavaScript实现给定时间相加天数的方法
Jan 25 Javascript
AngularJs bootstrap搭载前台框架——基础页面
Sep 01 Javascript
炫酷的js手风琴效果
Oct 13 Javascript
实例解析Array和String方法
Dec 14 Javascript
Bootstrap整体框架之CSS12栅格系统
Dec 15 Javascript
ES6中参数的默认值语法介绍
May 03 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
Mar 14 Javascript
JavaScript获取当前url路径过程解析
Dec 27 Javascript
JavaScript随机数的组合问题案例分析
May 16 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获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
PHP云打印类完整示例
2016/10/15 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
点图片上一页下一页翻页效果
2008/07/09 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
js实现选项卡效果
2020/03/07 Javascript
老生常谈python之鸭子类和多态
2017/06/13 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
python中reader的next用法
2018/07/24 Python
pytorch数据预处理错误的解决
2020/02/20 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
外贸业务员工作职责
2014/01/06 职场文书
一年级班主任寄语
2014/01/19 职场文书
幼儿园新学期开学寄语
2015/05/27 职场文书
辩论赛新闻稿
2015/07/17 职场文书
思想工作总结范文
2015/08/12 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL