vue 登录滑动验证实现代码


Posted in Javascript onAugust 24, 2018

在没给大家讲解实现代码之前,先给大家分享效果图:

vue 登录滑动验证实现代码

vue 登录滑动验证实现代码

之前别人都是用jq写的,自己整理了一下开始使用

<el-form-item label="验证">
<div class="form-inline-input">
<div class="code-box" id="code-box">
<input type="text" name="code" class="code-input" />
<p></p>
<span>>>></span>
</div>
</div>
</el-form-item>

vue代码

//获取元素距离页面边缘的距离
getOffset(box,direction){
var setDirection = (direction == 'top') ? 'offsetTop' : 'offsetLeft' ;
var offset = box[setDirection];
var parentBox = box.offsetParent;
while(parentBox){
offset+=parentBox[setDirection];
parentBox = parentBox.offsetParent;
}
parentBox = null;
return parseInt(offset);
},
 moveCode(code,_this){
var fn = {codeVluae : code};
var box = document.querySelector("#code-box"),
progress = box.querySelector("p"),
codeInput = box.querySelector('.code-input'),
evenBox = box.querySelector("span");
//默认事件
var boxEven = ['mousedown','mousemove','mouseup'];
//改变手机端与pc事件类型
if(typeof document.ontouchstart == 'object'){
boxEven = ['touchstart','touchmove','touchend'];
}
var goX,offsetLeft,deviation,evenWidth,endX;
function moveFn(e){
e.preventDefault();
e = (boxEven['0'] == 'touchstart') ? e.touches[0] : e || window.event;
endX = e.clientX - goX;
endX = (endX > 0) ? (endX > evenWidth) ? evenWidth : endX : 0;
if(endX > evenWidth * 0.7){
progress.innerText = '松开验证';
progress.style.backgroundColor = "#66CC66";
}else{
progress.innerText = '';
progress.style.backgroundColor = "#FFFF99";
}
progress.style.width = endX+deviation+'px';
evenBox.style.left = endX+'px';
}
function removeFn() {
document.removeEventListener(boxEven['2'],removeFn,false);
document.removeEventListener(boxEven['1'],moveFn,false);
if(endX > evenWidth * 0.7){
progress.innerText = '验证成功';
progress.style.width = evenWidth+deviation+'px';
evenBox.style.left = evenWidth+'px'
codeInput.value = fn.codeVluae;
evenBox.onmousedown = null;
_this.ruleForm.verification = true;
}else{
progress.style.width = '0px';
evenBox.style.left = '0px';
}
};
function getOffset(box,direction){
var setDirection = (direction == 'top') ? 'offsetTop' : 'offsetLeft' ;
var offset = box[setDirection];
var parentBox = box.offsetParent;
while(parentBox){
offset+=parentBox[setDirection];
parentBox = parentBox.offsetParent;
}
parentBox = null;
return parseInt(offset);
};
evenBox.addEventListener(boxEven['0'], function(e) {
e = (boxEven['0'] == 'touchstart') ? e.touches[0] : e || window.event;
goX = e.clientX,
offsetLeft = getOffset(box,'left'),
deviation = this.clientWidth,
evenWidth = box.clientWidth - deviation,
endX;
document.addEventListener(boxEven['1'],moveFn,false);
document.addEventListener(boxEven['2'],removeFn,false);
},false);
fn.setCode = function(code){
if(code)
fn.codeVluae = code;
}
fn.getCode = function(){
return fn.codeVluae;
}
fn.resetCode = function(){
evenBox.removeAttribute('style');
progress.removeAttribute('style');
codeInput.value = '';
};
return fn;
 }

调用

mounted(){
var _this = this;
// window.addEventListener('load',function(){
//code是后台传入的验证字符串
var code = "jsaidaisd656",
codeFn = new _this.moveCode(code,_this);
// });
}

验证样式

.form-inline-input{
 border:1px solid #dadada;
border-radius:5px;
}
.form-inline-input input,
.code-box{
 padding: 0 3px;
width: 298px;
height: 40px;
color: #fff;
text-shadow: 1px 1px 1px black;
background: #efefef;
border: 0;
border-radius: 5px;
 outline: none;
}
.code-box{
 position: relative;
}
.code-box p,
.code-box span{
 display:block;
 position: absolute;
 left: 0;
 height: 40px;
 text-align: center;
 line-height: 40px;
 border-radius: 5px;
padding:0;
margin:0;
}
.code-box span{
 width: 40px;
 background-color:#fff;
 font-size: 16px;
 cursor: pointer;
margin-right:1px;
}
.code-box p{
 width: 0;
 background-color: #FFFF99;
 overflow: hidden;
 text-indent: -20px;
 transition: background 1s ease-in;
}
.code-box .code-input{
 display: none;
}
.code-box .code-input{
 display: none;
}
.form-inline-input{
 border:1px solid #dadada;
border-radius:5px;
}
.form-inline-input input,
.code-box{
 padding: 0 3px;
width: 298px;
height: 40px;
color: #fff;
text-shadow: 1px 1px 1px black;
background: #efefef;
border: 0;
border-radius: 5px;
 outline: none;
}
.code-box{
 position: relative;
}
.code-box p,
.code-box span{
 display:block;
 position: absolute;
 left: 0;
 height: 40px;
 text-align: center;
 line-height: 40px;
 border-radius: 5px;
padding:0;
margin:0;
}
.code-box span{
 width: 40px;
 background-color:#fff;
 font-size: 16px;
 cursor: pointer;
margin-right:1px;
}
.code-box p{
 width: 0;
 background-color: #FFFF99;
 overflow: hidden;
 text-indent: -20px;
 transition: background 1s ease-in;
}
.code-box .code-input{
 display: none;
}
.code-box .code-input{
 display: none;
}

总结

以上所述是小编给大家介绍的vue 登录滑动验证实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
prototype.js的Ajax对象
Sep 23 Javascript
jQuery 选择器、DOM操作、事件、动画
Nov 25 Javascript
JS 实现点击a标签的时候让其背景更换
Oct 15 Javascript
javascript之Boolean类型对象
Jun 07 Javascript
JavaScript中push(),join() 函数 实例详解
Sep 06 Javascript
使用BootStrap进行轮播图的制作
Jan 06 Javascript
基于模板引擎Jade的应用(详解)
Dec 12 Javascript
微信小程序实现简易table表格
Jun 19 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 28 Javascript
使用vscode快速建立vue模板过程详解
Oct 10 Javascript
JS实现随机抽选获奖者
Nov 07 Javascript
vue之debounce属性被移除及处理详解
Nov 13 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
Aug 24 #Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 #Javascript
element-ui表格数据转换的示例代码
Aug 24 #Javascript
element-ui表格列金额显示两位小数的方法
Aug 24 #Javascript
vuejs 动态添加input框的实例讲解
Aug 24 #Javascript
vue.js input框之间赋值方法
Aug 24 #Javascript
react build 后打包发布总结
Aug 24 #Javascript
You might like
老照片 - 几十年前的收音机与人
2021/03/02 无线电
十天学会php之第五天
2006/10/09 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
php中的异常和错误浅析
2017/05/03 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
Python 返回汉字的汉语拼音
2009/02/27 Python
Python制作词云的方法
2018/01/03 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python定时任务 sched模块用法实例
2019/11/04 Python
详解CSS3实现响应式手风琴效果
2020/06/10 HTML / CSS
Ado与Ado.net的相同与不同
2014/12/08 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
信息部岗位职责
2013/11/12 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
三八活动策划方案
2014/08/17 职场文书
个人收入证明模板
2014/09/18 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript