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 相关文章推荐
Extjs显示从数据库取出时间转换JSON后的出现问题
Nov 20 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
类似天猫商品详情随浏览器移动的示例代码
Feb 27 Javascript
jquery实现背景墙聚光灯效果示例分享
Mar 02 Javascript
javascript判断复选框是否选中的方法
Oct 16 Javascript
Javascript实现鼠标框选操作  不是点击选取
Apr 14 Javascript
微信小程序 LOL 英雄介绍开发实例
Sep 30 Javascript
bootstrap modal弹出框的垂直居中
Dec 14 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
Apr 20 Javascript
Vue中render函数的使用方法
Jan 31 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
Sep 16 Javascript
vue项目中使用bpmn-自定义platter的示例代码
May 11 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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
我的论坛源代码(九)
2006/10/09 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
python类参数self使用示例
2014/02/17 Python
Python XML RPC服务器端和客户端实例
2014/11/22 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
Python如何读取、写入JSON数据
2020/07/28 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
意大利网上药房:Farmacia 33
2020/01/27 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
劲霸男装广告词改编版
2014/03/21 职场文书
大学推普周活动总结
2015/05/07 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
css样式important规则的正确使用方式
2022/06/10 HTML / CSS