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读写XML实现广告轮换(兼容IE、FF)
Aug 09 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
Sep 22 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
Mar 08 Javascript
jQuery获取字符串中出现最多的数
Feb 22 Javascript
Require.JS中的几种define定义方式示例
Jun 01 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
Jul 11 Javascript
深入理解Vue2.x的虚拟DOM diff原理
Sep 27 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
Aug 28 jQuery
JS原生带缩略图的图片切换效果
Oct 10 Javascript
js实现一个简易计算器
Mar 30 Javascript
jquery html添加元素/删除元素操作实例详解
May 20 jQuery
Vue和React有哪些区别
Sep 12 Javascript
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
使用PHP强制下载PDF文件示例
2014/01/17 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
解决layer图标icon不加载的问题
2019/09/04 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
小学毕业寄语大全
2014/04/03 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
公司租房协议书
2014/10/14 职场文书
创业计划书之面包店
2019/09/17 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
apache ftpserver搭建ftp服务器
2022/05/20 Servers