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验证表单大全
Nov 25 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
Feb 27 Javascript
Node.js事件驱动
Jun 18 Javascript
原生JavaScript制作计算器
Oct 16 Javascript
JS高级运动实例分析
Dec 20 Javascript
详解Angular的8个主要构造块
Jun 20 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
Nov 06 Javascript
Webpack devServer中的 proxy 实现跨域的解决
Jun 15 Javascript
vue填坑之webpack run build 静态资源找不到的解决方法
Sep 03 Javascript
laravel实现中文和英语互相切换的例子
Sep 30 Javascript
html5调用摄像头截图功能
Jan 18 Javascript
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
PHP新手入门学习方法
2011/05/08 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
详解AngularJS 过滤器的使用
2018/06/02 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
Python运算符重载用法实例分析
2015/06/01 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
set在python里的含义和用法
2019/06/24 Python
浅谈python出错时traceback的解读
2020/07/15 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
工业设计专业推荐信
2013/10/29 职场文书
实习教师个人的自我评价
2013/11/08 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
2014的自我评价
2014/01/13 职场文书
春节活动策划方案
2014/01/24 职场文书
公司承诺书格式
2014/05/21 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书