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打造省市下拉框联动效果
May 18 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
Sep 05 Javascript
js 打开新页面在屏幕中间的实现方法
Nov 02 Javascript
Ionic 2 实现列表滑动删除按钮的方法
Jan 22 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
基于node.js制作简单爬虫教程
Jun 29 Javascript
Vue代码分割懒加载的实现方法
Nov 23 Javascript
详解微信小程序的 request 封装示例
Aug 21 Javascript
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
Apr 14 Javascript
javascript实现点击产生随机图形
Jan 25 Javascript
WebWorker 封装 JavaScript 沙箱详情
Nov 02 Javascript
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
第十三节 对象串行化 [13]
2006/10/09 PHP
php实现搜索类封装示例
2016/03/31 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
javascript实现网页字符定位的方法
2015/07/14 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
Flask之flask-session的具体使用
2018/07/26 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
学python最电脑配置有要求么
2020/07/05 Python
简单的命令查看安装的python版本号
2020/08/28 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
英国最大的百货公司:Harrods
2016/08/18 全球购物
美国名牌香水折扣网站:Hottperfume
2021/02/10 全球购物
优秀员工表扬信
2014/01/17 职场文书
2014年政工师工作总结
2014/12/18 职场文书
教育实习指导教师评语
2014/12/31 职场文书
二审代理词范文
2015/05/25 职场文书
爱护公物主题班会
2015/08/17 职场文书