JS生成登录验证码

简介: JS生成登录验证码

采用js生成登录的验证码

采用的技术点有html,css,JS,jQuery



HTML:


<div class="box_b">
    <img src="./img/0775639c-c82c-4a29-937f-d2a3bae5151a.png" alt="">
    <div class="register">
    <h1>登录</h1>
    <div class="register_r">
      <span>账号:</span>
      <input type="text" placeholder="请输入您的账号">
    </div>
    <div class="register_r">
      <span>密码:</span>
      <input type="password" placeholder="请输入您的密码" >
    </div>
    <div class="register_e">
      <span>验证码:</span>
      <input type="text" placeholder="请输入验证码验证" id="verification">
      <canvas id="c1" width="100" height="35" style="border:1px solid black"></canvas>
    </div>
    <div class="register_g">
      <input type="checkbox">
      <span>记住账号密码</span>
    </div>
    <button class="register_i">登录</button>
    </div>
  </div>


css:

.box_b {
  width: 100%;
  height: 450px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  justify-content: space-around;
}
.box_b img {
  width: 500px;
  height: 550px;
}
.register {
  width: 480px;
  height: 400px;
  background-color: #E0E0EF;
  margin-top: 50px;
}
.register h1 {
  text-align: center;
  line-height: 80px;
}
.register span {
  font-size: 20px;
}
.register_r {
  width: 100%;
  display: flex;
  justify-content: space-evenly;
  line-height: 60px;
  text-align: center;
  align-items: center;
}
.register_r input {
  width: 300px;
  height: 35px;
  outline: none;
  padding-left: 10px;
  border: none;
}
.register_e {
  width: 100%;
  display: flex;
  justify-content: space-evenly;
  line-height: 60px;
  text-align: center;
  align-items: center;
}
.register_e input {
  width: 140px;
  height: 35px;
  outline: none;
  padding-left: 10px;
  border: none;
  margin-right: 30px;
}
.register_g {
  display: flex;
  align-items: center;
  margin-left: 40px;
}
.register_g input {
  width: 20px;
  height: 20px;
  margin-right: 7px;
}
.register_i {
  background-color: #298DFB;
  width: 84%;
  line-height: 50px;
  color: #fff;
  margin-top: 5%;
  border-radius: 5px;
  text-align: center;
  margin-left: 8%;
  border: 1px #E4E7ED ridge;
  font-size: 20px;
  cursor: pointer;
}
#c1 {
  vertical-align: middle;
  box-sizing: border-box;
  cursor: pointer;
  margin-right: 10px;
}


JS:

$(function() {
  // 存放随机的验证码
  var showNum = []
  draw(showNum)
  $("#c1").click(function() {
  draw(showNum)
  })
  $(".register_i").click(function() {
  var s = $("#verification").val().toLowerCase()
  var s1 = showNum.join("")
  if (s == s1) {
    alert("提交成功")
  } else {
    alert("验证码错误")
  }
  draw(showNum)
  })
  // 封装一个把随机验证码放在画布上
  function draw(showNum) {
  // 获取canvas
  var canvas = $("#c1")
  var ctx = canvas[0].getContext("2d")
  // 获取画布的宽高
  var canvas_width = canvas.width()
  var canvas_height = canvas.height()
  //  清空之前绘制的内容
  // 0,0清空的起始坐标
  // 矩形的宽高
  ctx.clearRect(0, 0, canvas_width, canvas_height)
  // 开始绘制
  var scode =
    "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,1,2,3,4,5,6,7,8,9,"
  var arrCode = scode.split(",")
  var arrLength = arrCode.length
  for (var i = 0; i < 4; i++) {
    var index = Math.floor(Math.random() * arrCode.length)
    var txt = arrCode[index] //随机一个字符
    showNum[i] = txt.toLowerCase() //转化为小写存入验证码数组
    // 开始控制字符的绘制位置
    var x = 10 + 20 * i //每一个验证码绘制的起始点x坐标
    var y = 20 + Math.random() * 8 // 起始点y坐标
    ctx.font = "bold 20px 微软雅黑"
    // 开始旋转字符
    var deg = Math.random * -0.5
    // canvas 要实现绘制内容具有倾斜的效果,必须先平移,目的是把旋转点移动到绘制内容的地方
    ctx.translate(x, y)
    ctx.rotate(deg)
    // 设置绘制的随机颜色
    ctx.fillStyle = randomColor()
    ctx.fillText(txt, 0, 0)
    // 把canvas复原
    ctx.rotate(-deg)
    ctx.translate(-x, -y)
  }
  for (var i = 0; i < 30; i++) {
    if (i < 5) {
    // 绘制线
    ctx.strokeStyle = randomColor()
    ctx.beginPath()
    ctx.moveTo(Math.random() * canvas_width, Math.random() * canvas_height)
    ctx.lineTo(Math.random() * canvas_width, Math.random() * canvas_height)
    ctx.stroke()
    }
    // 绘制点
    ctx.strokeStyle = randomColor()
    ctx.beginPath()
    var x = Math.random() * canvas_width
    var y = Math.random() * canvas_height
    ctx.moveTo(x, y)
    ctx.lineTo(x + 1, y + 1)
    ctx.stroke()
  }
  }
  // 随机颜色
  function randomColor() {
  var r = Math.floor(Math.random() * 256)
  var g = Math.floor(Math.random() * 256)
  var b = Math.floor(Math.random() * 256)
  return `rgb(${r},${g},${b})`
  }
})
相关文章
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
4571 5
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
349 3
|
资源调度 JavaScript API
nest.js + sms 实现短信验证码登录
本文介绍了在Nest.js框架中集成短信验证码登录的实现方案,详细阐述了使用阿里云短信服务的配置流程、资质申请、短信模板设置,并提供了API调用示例和工程代码的运行步骤。
nest.js + sms 实现短信验证码登录
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
599 2
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
225 1
|
存储 JSON 前端开发
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
本文介绍了在Node.js中使用token实现前端验证码和登录功能的详细流程,包括生成验证码、账号密码验证以及token验证和过期处理。
620 0
node使用token来实现前端验证码和登录功能详细流程[供参考]=‘很值得‘
|
JavaScript 前端开发
js随机验证码
js随机验证码
236 2
|
JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(二)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
713 0
|
存储 JSON JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
646 0
|
JavaScript 前端开发
js登录注册简单tab切换页面(含前台表单验证)
文章介绍了如何使用HTML、CSS和JavaScript创建一个简单的登录注册页面,并实现Tab切换效果。包括了表单验证,点击登录或注册按钮时,可以切换显示相应的表单。同时提供了完整的前端代码和实现效果图。

热门文章

最新文章