js实现滑动滑块验证登录


Posted in Javascript onJuly 24, 2020

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

1.html代码

<div class="box">
 <!--滑块-->
 <a href="#" rel="external nofollow" ><div class="btn">>></div></a>
 <!--文字-->
 <p class="text">拖动滑块验证</p>
 <!--背景-->
 <div class="bg"></div> 
</div>

2.css样式

最大的盒子相对定位,其他内部内容绝对定位
需要根据层级设置z-index保证滑动的正常使用

.box{
 position: relative;
 width: 300px;
 height: 34px;
 background: #e8e8e8;
 border-radius: 4px;
 left: 20px;
}
.btn{
 position: absolute;
 top: 0;
 width: 40px;
 height:32px;
 text-align: center;
 line-height: 32px;
 border-radius: 4px;
 z-index: 3;
 background-color: #fff;
 border: 1px solid #ccc;
 color: black;
}
.text{
 position: absolute;
 width: 100%;
 margin: 0;
 text-align: center;
 line-height: 34px;
 display: block;
 z-index: 2;
 /*-webkit-margin-before: 1em;
 -webkit-margin-after: 1em;*/
}
.bg{
 position: absolute;
 height: 100%;
 background-color: yellowgreen;
 z-index: 1;
}

样式

js实现滑动滑块验证登录

3.js事件

分析使用过程:按住滑块并拖动可以移动,中途松开滑块返回起始位置,拖动至最后滑块不动
分析动作:
1.按钮按下并移动
2.事件状态:event对象(鼠标位置)event.clientX获得与X轴的距离
3.松开按钮回到原处
4.结束,松开按钮,按钮不可再次拖动

1)

var btn=document.querySelector(".btn");
var box=document.querySelector(".box");
var bg=document.querySelector(".bg");
var text=document.querySelector(".text");

或者使用封装选择器

function $(name){
  return document.querySelector(name);
};
 var box=$(".box"),btn=$(".btn").....;

2)按下

按下后获得与x轴的距离

btn.onmousedown=function(e){
  var downX=e.clientX;

3)拖动

拖动后获得与x轴距离减去初始值距离得到按钮移动的值
根据移动的值:判断按钮是否可以正常移动,判断按钮是否已经完成验证

btn.onmousemove=function(e){
 var moveX=e.clientX-downX; 
// console.log(moveX);
 
 //移动范围
 if(moveX>-2){
 this.style.left=moveX+"px";//将移动值赋值给滑块
 bg.style.width=moveX+"px";//背景
 if(moveX>=(box.offsetWidth-btn.offsetWidth)){//包含原始宽度内边距边框,不包含外边框
 //拖到头,验证成功
 flag=true;
 text.innerHTML="验证成功";
 text.style.color="white";
 //事件清除
 btn.onmousedown=null;
 btn.onmousemove=null;
 }
 }

4)松开按钮

回到原处清除拖动

btn.onmouseup=function(){ 
 //事件清除
  btn.onmousemove=null;
  if(flag)return;
  this.style.left=0;//将移动值赋值给滑块
 bg.style.width=0;//背景
 
 }

4.效果

js实现滑动滑块验证登录

5.源码

//原生写法
window.onload=function(){
 var btn=document.querySelector(".btn");
 var box=document.querySelector(".box");
 var bg=document.querySelector(".bg");
 var text=document.querySelector(".text");
 //封装选择器
// function $(name){
// return document.querySelector(name);
// };
// var box=$(".box"),btn=$(".btn").....;
 var flag=false;
 //按下onmousedown 拖动onmousemove
 //document.querySelector(".btn").onmousedown=function(event){//event事件状态
// var e=event||window.event;
 //获取方法集合,可直接通过id, 类, 类型, 属性, 属性值等来选取元素(返回此名字的第一个)。
 btn.onmousedown=function(e){//按下
  var downX=e.clientX; //按下后对x轴的距离
//  console.log(downX);
//  alert("1");
 
 btn.onmousemove=function(e){//拖动
 var moveX=e.clientX-downX; //拖动后与x轴距离减去初始值距离,移动值
// console.log(moveX);
 
 //移动范围
 if(moveX>-2){
 this.style.left=moveX+"px";//将移动值赋值给滑块
 bg.style.width=moveX+"px";//背景
 if(moveX>=(box.offsetWidth-btn.offsetWidth)){//包含原始宽度内边距边框,不包含外边框
 //拖到头,验证成功
 flag=true;
 text.innerHTML="验证成功";
 text.style.color="white";
 //事件清除
 btn.onmousedown=null;
 btn.onmousemove=null;
 }
 }
 }
 }
 
 //松开按钮
 btn.onmouseup=function(){ 
 //事件清除
  btn.onmousemove=null;
  if(flag)return;
  this.style.left=0;//将移动值赋值给滑块
 bg.style.width=0;//背景
 
 }
}

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

Javascript 相关文章推荐
javascript各浏览器中option元素的表现差异
Apr 07 Javascript
jquery.cookie.js使用指南
Jan 05 Javascript
浅谈Javascript数组的使用
Jul 29 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
javascript实现简单计算器效果【推荐】
Apr 19 Javascript
jQuery插件passwordStrength密码强度指标详解
Jun 24 Javascript
React Native 通告消息竖向轮播组件的封装
Aug 25 Javascript
vue+vant实现商品列表批量倒计时功能
Jan 13 Javascript
JavaScript实现滑动门效果
Jan 18 Javascript
浅谈vue权限管理实现及流程
Apr 23 Javascript
详解JavaScript之ES5的继承
Jul 08 Javascript
JavaScript 异步时序问题
Nov 20 Javascript
解决VUEX的mapState/...mapState等取值问题
Jul 24 #Javascript
对vuex中store和$store的区别说明
Jul 24 #Javascript
小程序实现简单语音聊天的示例代码
Jul 24 #Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
Jul 24 #Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
Jul 24 #Javascript
javascript实现支付宝滑块验证码效果
Jul 24 #Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
Jul 24 #Javascript
You might like
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
基于jquery的cookie的用法
2011/01/10 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
JavaScript知识点整理
2015/12/09 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
vue项目添加多页面配置的步骤详解
2019/05/22 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
django删除表重建的实现方法
2019/08/28 Python
python中的时区问题
2021/01/14 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
C#面试题问题集
2016/04/02 面试题
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
Exception类的常用方法
2012/06/16 面试题
面试求职的个人自我评价
2013/11/16 职场文书
会计专业个人求职信范文
2014/01/08 职场文书
会计求职信范文
2014/05/24 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
综合办公室岗位职责
2015/04/11 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
防汛通知
2015/04/25 职场文书
工作态度不好检讨书
2015/05/06 职场文书
Android存储中最基本的文件存储方式
2022/04/30 Java/Android