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 表单的友好用户体现
Jan 07 Javascript
一个背景云变换js特效 鼠标移动背景云变化
Dec 28 Javascript
js模拟select下拉菜单控件的代码
May 08 Javascript
javascript表单控件实例讲解
Sep 13 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
jQuery中 bind的用法简单介绍
Feb 13 Javascript
浅析JS中的 map, filter, some, every, forEach, for in, for of 用法总结
Mar 29 Javascript
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
vue 监听屏幕高度的实例
Sep 05 Javascript
使用微信SDK自定义分享的方法
Jul 03 Javascript
vue设置动态请求地址的例子
Nov 01 Javascript
浅谈webpack构建工具配置和常用插件总结
May 11 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 常用类汇总 推荐收藏
2010/05/13 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
关于JS字符串函数String.replace()
2013/04/07 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
vue.js移动端tab组件的封装实践实例
2017/06/30 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
vue-router+nginx 非根路径配置方法
2018/06/30 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
Python XML RPC服务器端和客户端实例
2014/11/22 Python
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
2013/01/31 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
医院学雷锋活动策划方案
2014/02/15 职场文书
眼镜促销方案
2014/03/15 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书