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 07 Javascript
javascript优先加载笔记代码
Sep 30 Javascript
使用UglifyJS合并/压缩JavaScript的方法
Mar 07 Javascript
一个JavaScript变量声明的知识点
Oct 28 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
JS调用某段SQL语句的方法
Oct 20 Javascript
echarts3 使用总结(绘制各种图表,地图)
Jan 05 Javascript
Vue中props的使用详解
Jun 15 Javascript
微信小程序动画(Animation)的实现及执行步骤
Oct 28 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
webpack常用构建优化策略小结
Nov 21 Javascript
微信小程序新闻网站详情页实例代码
Jan 10 Javascript
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
php bootstrap实现简单登录
2016/03/08 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
Jquery倒计时源码分享
2014/05/16 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
Python入门篇之列表和元组
2014/10/17 Python
Python中的super用法详解
2015/05/28 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
如何运行带参数的python脚本
2019/11/15 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
python能自学吗
2020/06/18 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
音乐专业自荐信
2014/02/07 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
运动会加油稿100字
2014/09/19 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
自主招生专家推荐信
2015/03/26 职场文书
全国助残日活动总结
2015/05/11 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
安全生产协议书
2016/03/22 职场文书
详解Python类和对象内容
2021/06/22 Python