JavaScript实现滑块验证解锁


Posted in Javascript onJanuary 07, 2021

本文实例为大家分享了JavaScript实现滑块验证解锁的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
 
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 // 引入矢量图标库
 <link rel="stylesheet" href="https://at.alicdn.com/t/font_2248239_eso2z5bskxk.css">
 <title>Document</title>
 <style>
 * {
  margin: 0;
  padding: 0;
 }
 
 .box {
  width: 300px;
  height: 40px;
  line-height: 40px;
  text-align: center;
  background-color: #e8e8e8;
  box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.2);
  position: relative;
  margin-top: 100px;
  margin-left: 200px;
 }
 
 .box .bgColor {
  position: absolute;
  left: 0;
  top: 0;
  width: 40px;
  height: 40px;
 }
 
 .box .tips {
  position: absolute;
  width: 100%;
  height: 40px;
  line-height: 40px;
  font-size: 14px;
  color: #000;
  text-align: center;
  user-select: none;
 }
 
 .ball {
  width: 50px;
  height: 38px;
  border: 1px solid #ccc;
  background: #fff;
  text-align: center;
  cursor: move;
  position: absolute;
  top: 0;
  left: 0;
 }
 </style>
</head>
 
<body>
 <div class="box">
 <div class="bgColor"></div>
 <div class="tips">滑动验证</div>
 <div class="ball"><i class="iconfont icon-double-arro-right"></i></div>
 </div>
</body>
<script>
 var box = document.getElementsByClassName("box")[0];
 var ball = document.getElementsByClassName("ball")[0];
 var bgColor = document.getElementsByClassName("bgColor")[0];
 var tips = document.getElementsByClassName("tips")[0];
 // 设置成功状态
 var isSuccess = false; //默认为false 不成功
 ball.onmousedown = function(e) {
 var e = e || window.event;
 
 // 获取鼠标相对于事件源左上角的位置
 var posx = e.offsetX;
 
 // 每次鼠标按下时 清除动画样式
 ball.style.transition = "";
 bgColor.style.transition = "";
 document.onmousemove = function(e) {
  var e = e || window.event;
  var x = e.pageX - box.offsetLeft - posx;
  var max = box.clientWidth - ball.clientWidth;
  if (x <= 0) {
  x = 0;
  }
  if (x >= max) {
  x = max;
  }
  bgColor.style.width = x + "px";
  ball.style.left = x + "px";
  bgColor.style.backgroundColor = "#6ff";
  if (x == max) {
  success();
  }
 }
 document.onmouseup = function() {
  // 如果没有解锁成功则返回原点
  if (!isSuccess) {
  bgColor.style.width = 0 + "px";
  ball.style.left = 0 + "px";
  ball.style.transition = "left 0.6s linear";
  bgColor.style.transition = "width 0.6s linear";
  }
  // 鼠标抬起时,移除鼠标移动事件和鼠标抬起事件
  document.onmouseup = null;
  document.onmousemove = null;
 }
 }
 // 定义一个滑块解锁成功的方法
 function success() {
 isSuccess = true;
 // 获取图标
 var icon = ball.firstElementChild;
 tips.textContent = "解锁成功";
 bgColor.style.backgroundColor = "lightgreen";
 icon.className = "iconfont icon-gou";
 icon.style.color = "lightgreen";
 //滑动成功时,移除鼠标按下事件
 ball.onmousedown = null;
 }
</script>
 
</html>

 效果图如下:

JavaScript实现滑块验证解锁

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

Javascript 相关文章推荐
js正则表达式匹配数字字母下划线等
Apr 14 Javascript
比较常见的javascript中定义函数的区别
Nov 09 Javascript
JS实现六位字符密码输入器功能
Aug 19 Javascript
react开发中如何使用require.ensure加载es6风格的组件
May 09 Javascript
Vue中保存用户登录状态实例代码
Jun 07 Javascript
js原生代码实现轮播图的实例讲解
Jul 28 Javascript
JS库之ParticlesJS使用简介
Sep 12 Javascript
利用ECharts.js画K线图的方法示例
Jan 10 Javascript
解决webpack无法通过IP地址访问localhost的问题
Feb 22 Javascript
使用apifm-wxapi快速开发小程序过程详解
Aug 05 Javascript
浅谈vuex为什么不建议在action中修改state
Feb 02 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
Oct 27 Javascript
js删除指定位置超链接中含有百度与360的标题
Jan 06 #Javascript
基于element-ui封装表单金额输入框的方法示例
Jan 06 #Javascript
JS中多层次排序算法的实现代码
Jan 06 #Javascript
如何使用原生Js实现随机点名详解
Jan 06 #Javascript
详解微信小程序「渲染层网络层错误」的解决方法
Jan 06 #Javascript
JavaScript 中的六种循环方法
Jan 06 #Javascript
JavaScript的一些小技巧分享
Jan 06 #Javascript
You might like
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
2015/10/22 PHP
php接口技术实例详解
2016/12/07 PHP
在IE模态窗口中自由查看HTML源码的方法
2007/03/08 Javascript
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
2019/01/06 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python执行等待程序直到第二天零点的方法
2015/04/23 Python
python计算时间差的方法
2015/05/20 Python
Python实现登陆文件验证方法
2018/10/06 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
食品行业求职人的自我评价
2014/01/19 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
八年级英语教学反思
2016/02/15 职场文书
SpringBoot实现异步事件驱动的方法
2021/06/28 Java/Android
解决MySQL报“too many connections“错误
2022/04/19 MySQL
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers