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 相关文章推荐
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
Jan 23 Javascript
jcrop基本参数一览
Jul 16 Javascript
vue.js学习之递归组件
Dec 13 Javascript
一篇文章搞定JavaScript类型转换(面试常见)
Jan 21 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
Jul 12 jQuery
web前端vue filter 过滤器
Jan 12 Javascript
vue axios 在页面切换时中断请求方法 ajax
Mar 05 Javascript
小程序云开发实现数据库异步操作同步化
May 18 Javascript
微信小程序文章详情页跳转案例详解
Jul 09 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 20 Javascript
JS实现放大镜效果
Sep 21 Javascript
vue 自定义组件添加原生事件
Apr 21 Vue.js
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
jquery搜索框效果实现方法
2015/01/16 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
vue页面离开后执行函数的实例
2018/03/13 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
Python语言进阶知识点总结
2019/05/28 Python
python中dict使用方法详解
2019/07/17 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
python实现最速下降法
2020/03/24 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
求职简历自荐信
2013/10/20 职场文书
专业实习自我鉴定
2013/10/29 职场文书
怎样写好自我鉴定
2013/12/04 职场文书
采购部部门职责
2013/12/15 职场文书
可贵的沉默教学反思
2014/02/06 职场文书
安全生产活动月方案
2014/03/09 职场文书
医院节能减排方案
2014/06/13 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
学院党的群众路线教育实践活动整改方案
2014/10/04 职场文书
2014年科协工作总结
2014/12/09 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL