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 相关文章推荐
国外Lightbox v2.03.3 最新版 下载
Oct 17 Javascript
为调试JavaScript添加输出窗口的代码
Feb 07 Javascript
用js来解决ajax读取页面乱码
Nov 28 Javascript
jQuery使用数组编写图片无缝向左滚动
Dec 11 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
Apr 16 Javascript
node.js中的console.info方法使用说明
Dec 09 Javascript
js实现禁止中文输入的方法
Jan 14 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
May 02 Javascript
BootStrap模态框不垂直居中的解决方法
Oct 19 Javascript
实例讲解JavaScript预编译流程
Jan 24 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
Dec 06 Javascript
使用preload预加载页面资源时注意事项
Feb 03 Javascript
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
PHP树的代码,可以嵌套任意层
2006/10/09 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
8个PHP数组面试题
2015/06/23 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
制作特殊字的脚本
2006/06/26 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
javascript中in运算符用法分析
2015/04/28 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
2020/04/28 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
Python的Django框架中的Context使用
2015/07/15 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
Python对象的属性访问过程详解
2020/03/05 Python
瑞典在互联网上最大的宠物商店:Animail
2020/10/31 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
师恩难忘教学反思
2014/04/27 职场文书
市场营销专业求职信
2014/06/17 职场文书
股份合作协议书
2014/09/10 职场文书
快递员岗位职责
2014/09/12 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
授权委托书样本
2014/09/25 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android