Html5生成验证码的示例代码


Posted in Javascript onMay 10, 2021

利用Html5的canvas标签生成画布,在画布上利用随机生成的数字画上验证码,背景为随机生成的颜色和杂乱的直线与点点。

进阶:利用表单插件属性绑定验证码数据(json)可以在发送时候或者异步通信进行后台数据获取与检查。

代码块

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>验证码</title>
<style type="text/css">
    #canvas{
        cursor:pointer;
    }
</style>
</head>
<body>
    <canvas id="canvas" width="150px" height="50px"></canvas>
<script>
        //生成随机数
    function randomNum(min,max){
        return Math.floor(Math.random()*(max-min)+min);
    }
        //生成随机颜色RGB分量
    function randomColor(min,max){
        var _r = randomNum(min,max);
        var _g = randomNum(min,max);
        var _b = randomNum(min,max);
        return "rgb("+_r+","+_g+","+_b+")";
    }
    //先阻止画布默认点击发生的行为再执行drawPic()方法
    document.getElementById("canvas").onclick = function(e){
        e.preventDefault();
        drawPic();
    };
    function drawPic(){
        //获取到元素canvas
        var $canvas = document.getElementById("canvas");
        var _str = "0123456789";//设置随机数库
        var _picTxt = "";//随机数
        var _num = 4;//4个随机数字
        var _width = $canvas.width;
        var _height = $canvas.height;
        var ctx = $canvas.getContext("2d");//获取 context 对象
        ctx.textBaseline = "bottom";//文字上下对齐方式--底部对齐
        ctx.fillStyle = randomColor(180,240);//填充画布颜色
        ctx.fillRect(0,0,_width,_height);//填充矩形--画画
        for(var i=0; i<_num; i++){
            var x = (_width-10)/_num*i+10;
            var y = randomNum(_height/2,_height);
            var deg = randomNum(-45,45);
            var txt = _str[randomNum(0,_str.length)];
            _picTxt += txt;//获取一个随机数
            ctx.fillStyle = randomColor(10,100);//填充随机颜色
            ctx.font = randomNum(16,40)+"px SimHei";//设置随机数大小,字体为SimHei
            ctx.translate(x,y);//将当前xy坐标作为原始坐标
            ctx.rotate(deg*Math.PI/180);//旋转随机角度
            ctx.fillText(txt, 0,0);//绘制填色的文本
            ctx.rotate(-deg*Math.PI/180);
            ctx.translate(-x,-y);
        }
        for(var i=0; i<_num; i++){
            //定义笔触颜色
            ctx.strokeStyle = randomColor(90,180);
            ctx.beginPath();
            //随机划线--4条路径
            ctx.moveTo(randomNum(0,_width), randomNum(0,_height));
            ctx.lineTo(randomNum(0,_width), randomNum(0,_height));
            ctx.stroke();
        }
        for(var i=0; i<_num*10; i++){
            ctx.fillStyle = randomColor(0,255);
            ctx.beginPath();
            //随机画原,填充颜色
            ctx.arc(randomNum(0,_width),randomNum(0,_height), 1, 0, 2*Math.PI);
            ctx.fill();
        }
        return _picTxt;//返回随机数字符串
    }
    drawPic();
</script>
</body>
</html>

到此这篇关于Html5生成验证码的示例代码的文章就介绍到这了,更多相关Html5生成验证码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
Javascript 相关文章推荐
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
Jquery 插件开发笔记整理
Jan 17 Javascript
基于Jquery的文字自动截取(提供源代码)
Aug 09 Javascript
Extjs实现下拉菜单效果
Apr 01 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
Mar 09 Javascript
JavaScript实现简单图片轮播效果
Aug 21 Javascript
从vue源码看props的用法
Jan 09 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
Feb 21 Javascript
JS实现点餐自动选择框(案例分析)
Dec 10 Javascript
Vue3.0的优化总结
Oct 16 Javascript
详解Js模块化的作用原理和方案
Apr 29 Javascript
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
php 获取远程网页内容的函数
2009/09/08 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
php curl模拟post请求小实例
2013/11/13 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python获取list下标及其值的简单方法
2016/09/12 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
谈谈Python中的while循环语句
2019/03/10 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
python实现从ftp服务器下载文件
2020/03/03 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
业务部经理岗位职责
2014/01/04 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
大学生创业事迹材料
2014/12/30 职场文书
沈阳故宫导游词
2015/01/31 职场文书
学校教师培训工作总结
2015/10/14 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
linux下安装redis图文详细步骤
2021/12/04 Redis
nginx常用配置conf的示例代码详解
2022/03/21 Servers