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实现的文字淡入淡出效果
Nov 14 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
Sep 02 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
js手机号批量滚动抽奖实现代码
Apr 17 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
Apr 13 Javascript
原生JS上传大文件显示进度条 php上传文件代码
Mar 27 Javascript
vue scroller返回页面记住滚动位置的实例代码
Jan 29 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 Javascript
深入理解vue-class-component源码阅读
Feb 18 Javascript
基于VUE的v-charts的曲线显示功能
Oct 01 Javascript
JQuery 实现文件下载的常用方法分析
Oct 29 jQuery
解决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中函数前加&amp;符号的作用分解
2014/07/08 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
js原型链原理看图说明
2012/07/07 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
python算法学习之基数排序实例
2013/12/18 Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
2018/07/18 Python
pytorch 实现打印模型的参数值
2019/12/30 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
荷兰手表网站:Watch2Day
2018/07/02 全球购物
Java基础面试题
2014/07/19 面试题
毕业研究生的自我鉴定
2013/11/30 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
运动会观后感
2015/06/09 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
Java输出Hello World完美过程解析
2021/06/13 Java/Android
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android