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 相关文章推荐
IE JS无提示关闭窗口不提示的方法
Apr 29 Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
Dec 26 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 Javascript
简介AngularJS中$http服务的用法
Feb 06 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
Oct 10 Javascript
bootstrap模态框消失问题的解决方法
Dec 02 Javascript
ztree实现权限横向显示功能
May 20 Javascript
vue+SSM实现验证码功能
Dec 07 Javascript
详解小程序如何避免多次点击,重复触发事件
Apr 08 Javascript
20个必会的JavaScript面试题(小结)
Jul 02 Javascript
layUI实现列表查询功能
Jul 27 Javascript
js实现经典贪吃蛇小游戏
Mar 19 Javascript
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
在Python中调用ggplot的三种方法
2015/04/08 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
python游戏地图最短路径求解
2019/01/16 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
Python 存取npy格式数据实例
2020/07/01 Python
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
Java中实现多态的机制
2015/08/09 面试题
大学生个人求职信范文
2013/09/21 职场文书
保洁主管岗位职责
2013/11/20 职场文书
教育课题研究自我鉴定范文
2013/12/28 职场文书
纺织工程专业个人求职信范文
2014/01/27 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
设计专业自荐信
2014/06/19 职场文书
信访维稳工作汇报
2014/10/27 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
新员工实习期个人工作总结
2015/10/15 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
vue里使用create, mounted调用方法
2022/04/26 Vue.js