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 相关文章推荐
js 替换
Feb 19 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
jsonp原理及使用
Oct 28 Javascript
用js判断输入是否为中文的函数
Mar 10 Javascript
Js控制滑轮左右滑动实例
Feb 13 Javascript
javascript实现删除前弹出确认框
Jun 04 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
Jun 09 Javascript
彻底学会Angular.js中的transclusion
Mar 12 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
Sep 21 Javascript
基于three.js实现的3D粒子动效实例代码
Apr 09 Javascript
layer页面跳转,获取html子节点元素的值方法
Sep 27 Javascript
微信小程序实现购物车小功能
Dec 30 Javascript
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
聊天室php&amp;mysql(一)
2006/10/09 PHP
详解php的socket通信
2015/08/11 PHP
PHP可变变量学习小结
2015/11/29 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
2017/02/17 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
python分析作业提交情况
2017/11/22 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Random 在 Python 中的使用方法
2018/08/09 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
使用pandas读取文件的实现
2019/07/31 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
精细化工应届生求职信
2013/11/17 职场文书
财务会计实习报告体会
2013/12/20 职场文书
国际贸易系求职信
2014/08/09 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
部门主管竞聘书
2015/09/15 职场文书
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript
使用Nginx搭载rtmp直播服务器的方法
2021/10/16 Servers