当前位置:   article > 正文

Web前端-html 5—CANVAS随机验证码_html中验证码的标签

html中验证码的标签
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>随机验证码</title>
  6. <style>
  7. #c1 {
  8. border: 1px solid #999;
  9. vertical-align: bottom;
  10. }
  11. input {
  12. width: 120px;
  13. height: 30px;
  14. vertical-align: bottom;
  15. padding: 0;
  16. border: 1px solid #999;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <!--<form action="http://www.baidu.com" id="f1">-->
  22. <input type="text" id="inp1"/>
  23. <canvas id="c1" width="120" height="30">您的浏览器不支持canvas</canvas>
  24. <br/>
  25. <button>提交</button>
  26. <!--</form>-->
  27. <script>
  28. var myinput = document.querySelector("input");
  29. var mybutton = document.querySelector("button");
  30. var mycanvas = document.querySelector("canvas");
  31. var ctx = mycanvas.getContext("2d");
  32. /*
  33. * 分析 :验证码
  34. * 1, 准备 随机数 随机色
  35. * 2,遮罩线(随机排布,颜色随机)
  36. * 3,遮罩点(随机排布 颜色随机)
  37. * 4,背景色随机
  38. * 5,绘制的文本(大小随机,内容随机,颜色随机 ,角度随机)
  39. *
  40. *辅助:
  41. * 1。input输入的内容要与canvas的内容校验
  42. * 2,点击canvas 重新绘制(刷新)
  43. * */
  44. var content = "";
  45. function draw() {
  46. content = "";
  47. //随机背景
  48. ctx.fillStyle = getRandomColor(170,250);
  49. ctx.fillRect(0,0,120,30);
  50. //遮罩线(随机排布,颜色随机)
  51. for(var i = 0;i<5 ;i++){
  52. ctx.beginPath();
  53. ctx.strokeStyle= getRandomColor(110,200);
  54. ctx.moveTo(ran(5,110),ran(5,25));
  55. ctx.lineTo(ran(5,110),ran(5,25));
  56. ctx.stroke()
  57. }
  58. // 遮罩点(随机排布 颜色随机)
  59. for(var i = 0;i<40 ;i++){
  60. ctx.beginPath();
  61. ctx.fillStyle = getRandomColor(100,170);
  62. // ctx.arc()
  63. ctx.fillRect(ran(0,115),ran(0,25),1.5,1.5);
  64. }
  65. // 绘制的文本(大小随机,内容随机,颜色随机 ,角度随机)
  66. ctx.textBaseline = "top";
  67. var str = "qwertyuioplmkjnhbgvfcdxszaQAZWSXEDCRFVTGBYHNUJMIKOLP1234567890";
  68. // var str = "qwertyuioplmkjnhbgvfcdxsza";
  69. for(var i = 0;i<4 ;i++){
  70. ctx.beginPath();
  71. ctx.fillStyle = getRandomColor(0,100);
  72. ctx.font =ran(15,40)+"px '宋体'";
  73. // ctx.textBaseline = "top";
  74. var text = str[ran(0,str.length-1)];
  75. content += text;
  76. // ctx.fillText(text,i*30,5);
  77. ctx.translate(i*30,0);
  78. var angle = Math.PI/180*ran(-20,20);
  79. ctx.rotate(angle);
  80. ctx.fillText(text,0,0);
  81. //还原回去
  82. ctx.rotate(-angle);
  83. ctx.translate(-i*30,0);
  84. }
  85. console.log(content);
  86. }
  87. draw();
  88. //点击按钮验证值
  89. mybutton.onclick = function () {
  90. // 不区分大写操作
  91. if( myinput.value.toLowerCase()===content.toLowerCase()){
  92. alert("正确")
  93. }else{
  94. alert("错误")
  95. // 从新刷新
  96. draw();
  97. }
  98. }
  99. //点击canvas 刷新
  100. mycanvas.onclick = function () {
  101. draw();
  102. }
  103. //定义一个随机值 有[min,max]
  104. function ran(min, max) {
  105. return parseInt(Math.random() * (max - min + 1) + min)
  106. }
  107. // 定义随机颜色
  108. function getRandomColor(min,max) {
  109. var R = ran(min, max);
  110. var G = ran(min, max);
  111. var B = ran(min, max);
  112. return "rgb("+R+","+G+","+B+")"
  113. }
  114. // console.log(getRandomColor(170, 220));
  115. </script>
  116. </body>
  117. </html>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/54511
推荐阅读
相关标签
  

闽ICP备14008679号