canvas基础之图形验证码的示例


Posted in HTML / CSS onJanuary 02, 2018

在通常的登录界面我们都可以看到验证码,验证码的作用是检测是不是人在操作,防止机器等非人操作,防止数据库被轻而易举的攻破。

验证码一般用PHP和java等后端语言编写;

但是在前端,用canva或者SVG也可以绘制验证码;

直接上干货:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            canvas {
                border: 1px solid red;
            }
        </style>
    </head>

    <body>
        <canvas id="myCanvas" width="100" height="40">
            您的浏览器不支持canvas
        </canvas>
    </body>
    <script type="text/javascript">
        var myCanvas = document.getElementById("myCanvas");
        var context = myCanvas.getContext("2d");
        //随机字符(透明度)(大小随机,位置随机);
        var strStore = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        //随机函数
        function roundNum(min, max) {
            return parseInt(Math.random() * (max - min) + min);
        }
        //文字内容部分:
        var str = "";
        for(var i = 0; i < 5; i++) {
            context.beginPath();
            //随机颜色(浅色:RGB - 200~250)
            var color = `rgb(${roundNum(0,255)},${roundNum(0,255)},${roundNum(0,255)})`;
            context.fillStyle = color;
            context.font = roundNum(20,30)+"px Arial";
            context.textAlign = "center";
            str = strStore[roundNum(0,strStore.length)];
            context.fillText(str, 10 + 18 * i, roundNum(20,35));
        }

        //10个左右的随机(长度随机,位置随机),干扰线
        for(var j = 0; j < roundNum(5, 10); j++) {
            context.beginPath();
            var color = `rgb(${roundNum(0,255)},${roundNum(0,255)},${roundNum(0,255)})`;
            context.strokeStyle = color;
            context.moveTo(roundNum(0, 100), roundNum(0, 40));
            context.lineTo(roundNum(0, 100), roundNum(0, 40));
            context.stroke();
        }

        //干扰项:10个左右的随机(半径随机,位置随机),干扰圆
        for(var j = 0; j < roundNum(5, 10); j++) {
            context.beginPath();
            context.fillStyle = color;
            context.arc(roundNum(0, 100), roundNum(0, 40), roundNum(0, 5), Math.PI * 2 / (roundNum(1, 360)), Math.PI * 2 / (roundNum(1, 360)));
            context.fill();
        }
        
    </script>

</html>

结果如图:

canvas基础之图形验证码的示例

至于要拿来咋用,就看大家高兴了。想怎么整这么整。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
Css3+Js制作漂亮时钟(附源码)
Apr 24 HTML / CSS
CSS3 Notes: -webkit-box-reflect实现倒影的实例
Dec 08 HTML / CSS
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
Oct 08 HTML / CSS
html5中去掉input type date默认样式的方法
Sep 06 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(一)
Jan 21 HTML / CSS
HTML5 Canvas draw方法制作动画效果示例
Jul 11 HTML / CSS
实例教程 利用html5和css3打造一款创意404页面
Oct 20 HTML / CSS
巧用HTML5给按钮背景设计不同的动画简单实例
Aug 09 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
Jul 31 HTML / CSS
HTML5响应式(自适应)网页设计的实现
Nov 17 HTML / CSS
data:image data url 文件转为Blob上传后端的方法
Jul 16 HTML / CSS
解决flex布局中子项目尺寸不受flex-shrink限制
May 11 HTML / CSS
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
Jan 03 #HTML / CSS
html5 canvas绘制放射性渐变色效果
Jan 04 #HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
Jan 11 #HTML / CSS
详解Html5原生拖拽操作
Jan 12 #HTML / CSS
使用Html5、CSS实现文字阴影效果
Jan 17 #HTML / CSS
canvas烟花特效锦集
Jan 17 #HTML / CSS
使用html2canvas实现浏览器截图的示例代码
Jan 26 #HTML / CSS
You might like
聊天室php&amp;mysql(一)
2006/10/09 PHP
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
js电话号码验证方法
2015/09/28 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
树结构之JavaScript
2017/01/24 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
微信小程序服务器日期格式化问题
2020/01/07 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Python list与NumPy array 区分详解
2019/11/06 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
韩国家庭购物网上商店:Nsmall
2017/05/07 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
优质的学校老师推荐信
2013/10/28 职场文书
和平主题的演讲稿
2014/01/12 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
电力安全事故反思
2014/04/27 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
纪委立案决定书
2015/06/24 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书