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 相关文章推荐
jQuery中on()方法用法实例详解
Feb 06 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
Aug 24 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
Dec 08 Javascript
JQuery用户名校验的具体实现
Mar 18 Javascript
JS中取二维数组中最大值的方法汇总
Apr 17 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
Oct 09 Javascript
React中如何引入Angular组件详解
Aug 09 Javascript
p5.js实现动态图形临摹
Oct 23 Javascript
小程序实现录音上传功能
Nov 22 Javascript
js实现全选和全不选
Jul 28 Javascript
node.js 如何监视文件变化
Sep 01 Javascript
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
解决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
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
2016/09/22 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
[00:31]DOTA2荣耀之路7:Miracle-空血无敌斩
2018/05/31 DOTA
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
nohup的用法
2012/11/26 面试题
公司寄语大全
2014/04/10 职场文书
委托证明书
2014/09/17 职场文书
语文教师求职信范文
2015/03/20 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书