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判断单选框或复选框是否选中方法集锦
Apr 04 Javascript
类似天猫商品详情随浏览器移动的示例代码
Feb 27 Javascript
jQuery中unbind()方法用法实例
Jan 19 Javascript
JQuery标签页效果实例详解
Dec 24 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
原生js实现弹出层登录拖拽功能
Dec 05 Javascript
JS实现超简单的汉字转拼音功能示例
Dec 22 Javascript
angular实现表单验证及提交功能
Feb 01 Javascript
JS如何获取地址栏的参数实例讲解
Oct 06 Javascript
基于JavaScript伪随机正态分布代码实例
Nov 07 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 Javascript
jQuery实现tab栏切换效果
Dec 22 jQuery
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
微信小程序实现拍照和相册选取图片
微信小程序实现录音Record功能
如何用JavaScipt测网速
May 09 #Javascript
浅谈JS的二进制家族
You might like
php中cookie的作用域
2008/03/27 PHP
PHP下一个非常全面获取图象信息的函数
2008/11/20 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
2014/06/22 PHP
Thinkphp使用mongodb数据库实现多条件查询方法
2014/06/26 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
Angular中封装fancyBox(图片预览)遇到问题小结
2017/09/01 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
2017/09/13 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
基层党员对照检查材料
2014/09/24 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
2015年预算员工作总结
2015/05/14 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书