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 相关文章推荐
扩展jQuery 键盘事件的几个基本方法
Oct 30 Javascript
javascript HTML5文件上传FileReader API
Mar 27 Javascript
详解angularjs结合pagination插件实现分页功能
Feb 10 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
vue中component组件的props使用详解
Sep 04 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
Oct 15 Javascript
AngularJS的$location使用方法详解
Oct 19 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
Nov 01 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
node使用request请求的方法
Dec 20 Javascript
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
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
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
PHP比你想象的好得多
2014/11/27 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
Javascript MD4
2006/12/20 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
pandas实现选取特定索引的行
2018/04/20 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
会计主管岗位职责
2015/04/02 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
旅游安全责任协议书
2016/03/22 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书