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 相关文章推荐
单击浏览器右上角的X关闭窗口弹出提示的小例子
Jun 12 Javascript
用JavaScript实现类似于ListBox功能示例代码
Mar 09 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
Apr 28 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
Feb 09 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
angular.fromJson与toJson方法用法示例
May 17 Javascript
Vue.js实例方法之生命周期详解
Jul 03 Javascript
详解Vue组件实现tips的总结
Nov 01 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
Dec 13 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
Jan 21 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
Dec 04 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
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
document.compatMode介绍
2009/05/21 Javascript
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
制作jquery遮罩层效果导航菜单代码分享
2013/12/25 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
python中pycurl库的用法实例
2014/09/30 Python
python操作redis的方法
2015/07/07 Python
Python三级菜单的实例
2017/09/13 Python
用matplotlib画等高线图详解
2017/12/14 Python
python实现感知器
2017/12/19 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
Python面向对象类的继承实例详解
2018/06/27 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
请说出以下代码输出什么
2013/08/30 面试题
后勤副校长自我鉴定
2013/10/13 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
生日答谢词
2015/01/05 职场文书
企业百日安全活动总结
2015/05/07 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书