经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTML/CSS » HTML5 » 查看文章
Html5生成验证码的示例代码
来源:jb51  时间:2021/5/10 19:21:31  对本文有异议

利用Html5的canvas标签生成画布,在画布上利用随机生成的数字画上验证码,背景为随机生成的颜色和杂乱的直线与点点。

进阶:利用表单插件属性绑定验证码数据(json)可以在发送时候或者异步通信进行后台数据获取与检查。

代码块

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>验证码</title>
  6. <style type="text/css">
  7. #canvas{
  8. cursor:pointer;
  9. }
  10. </style>
  11. </head>
  12. <body>
  13. <canvas id="canvas" width="150px" height="50px"></canvas>
  14. <script>
  15. //生成随机数
  16. function randomNum(min,max){
  17. return Math.floor(Math.random()*(max-min)+min);
  18. }
  19. //生成随机颜色RGB分量
  20. function randomColor(min,max){
  21. var _r = randomNum(min,max);
  22. var _g = randomNum(min,max);
  23. var _b = randomNum(min,max);
  24. return "rgb("+_r+","+_g+","+_b+")";
  25. }
  26. //先阻止画布默认点击发生的行为再执行drawPic()方法
  27. document.getElementById("canvas").onclick = function(e){
  28. e.preventDefault();
  29. drawPic();
  30. };
  31. function drawPic(){
  32. //获取到元素canvas
  33. var $canvas = document.getElementById("canvas");
  34. var _str = "0123456789";//设置随机数库
  35. var _picTxt = "";//随机数
  36. var _num = 4;//4个随机数字
  37. var _width = $canvas.width;
  38. var _height = $canvas.height;
  39. var ctx = $canvas.getContext("2d");//获取 context 对象
  40. ctx.textBaseline = "bottom";//文字上下对齐方式--底部对齐
  41. ctx.fillStyle = randomColor(180,240);//填充画布颜色
  42. ctx.fillRect(0,0,_width,_height);//填充矩形--画画
  43. for(var i=0; i<_num; i++){
  44. var x = (_width-10)/_num*i+10;
  45. var y = randomNum(_height/2,_height);
  46. var deg = randomNum(-45,45);
  47. var txt = _str[randomNum(0,_str.length)];
  48. _picTxt += txt;//获取一个随机数
  49. ctx.fillStyle = randomColor(10,100);//填充随机颜色
  50. ctx.font = randomNum(16,40)+"px SimHei";//设置随机数大小,字体为SimHei
  51. ctx.translate(x,y);//将当前xy坐标作为原始坐标
  52. ctx.rotate(deg*Math.PI/180);//旋转随机角度
  53. ctx.fillText(txt, 0,0);//绘制填色的文本
  54. ctx.rotate(-deg*Math.PI/180);
  55. ctx.translate(-x,-y);
  56. }
  57. for(var i=0; i<_num; i++){
  58. //定义笔触颜色
  59. ctx.strokeStyle = randomColor(90,180);
  60. ctx.beginPath();
  61. //随机划线--4条路径
  62. ctx.moveTo(randomNum(0,_width), randomNum(0,_height));
  63. ctx.lineTo(randomNum(0,_width), randomNum(0,_height));
  64. ctx.stroke();
  65. }
  66. for(var i=0; i<_num*10; i++){
  67. ctx.fillStyle = randomColor(0,255);
  68. ctx.beginPath();
  69. //随机画原,填充颜色
  70. ctx.arc(randomNum(0,_width),randomNum(0,_height), 1, 0, 2*Math.PI);
  71. ctx.fill();
  72. }
  73. return _picTxt;//返回随机数字符串
  74. }
  75. drawPic();
  76. </script>
  77. </body>
  78. </html>

到此这篇关于Html5生成验证码的示例代码的文章就介绍到这了,更多相关Html5生成验证码内容请搜索w3xue以前的文章或继续浏览下面的相关文章,希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号