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动画过渡实现鼠标跟随导航效果
Feb 08 HTML / CSS
可自定义箭头样式的CSS3气泡提示框
Mar 16 HTML / CSS
浅谈CSS3特性查询(Feature Query: @supports)功能简介
Jul 31 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
Jan 17 HTML / CSS
基于CSS3的animation属性实现微信拍一拍动画效果
Jun 22 HTML / CSS
HTML5 canvas 基本语法
Aug 26 HTML / CSS
HTML5实现锚点时请使用id取代name
Sep 06 HTML / CSS
一些常用的HTML5模式(pattern) 总结
Jul 14 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
Aug 24 HTML / CSS
html5中canvas图表实现柱状图的示例
Nov 13 HTML / CSS
h5网页水印SDK的实现代码示例
Feb 19 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
Aug 20 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
基于mysql的论坛(5)
2006/10/09 PHP
PHP文件下载类
2006/12/06 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
js常用代码段整理
2011/11/30 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
python设置检查点简单实现代码
2014/07/01 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
乐观大学生的自我评价
2014/01/10 职场文书
求职毕业生自荐书
2014/02/08 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
小学节能减排倡议书
2014/05/15 职场文书
另类冲刺标语
2014/06/24 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
业务内勤岗位职责
2015/04/13 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书