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 相关文章推荐
给Javascript数组插入一条记录的代码
Aug 30 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
Nov 12 Javascript
jquery实现动态菜单的实例代码
Nov 28 Javascript
jQuery实现移动 和 渐变特效的点击事件
Feb 26 Javascript
JS实现从表格中动态删除指定行的方法
Mar 31 Javascript
js 提交form表单和设置form表单请求路径的实现方法
Oct 25 Javascript
原生JS实现不断变化的标签
May 22 Javascript
vue 里面使用axios 和封装的示例代码
Sep 01 Javascript
Vue.js递归组件构建树形菜单
Dec 24 Javascript
angular写一个列表的选择全选交互组件的示例
Jan 22 Javascript
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
微信小程序实现跳转的几种方式总结(推荐)
Apr 24 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
php利用反射实现插件机制的方法
2015/03/14 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
PHP实现小偷程序实例
2016/10/31 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
JavaScript实现小球沿正弦曲线运动
2020/09/07 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
node.js通过url读取文件
2020/10/16 Javascript
python处理Excel xlrd的简单使用
2017/09/12 Python
Python入门必须知道的11个知识点
2018/03/21 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
Python实现SMTP邮件发送
2020/06/16 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
村庄绿化方案
2014/05/07 职场文书
爱护草坪标语
2014/06/24 职场文书
市场营销工作计划书
2014/09/15 职场文书
优秀团员事迹材料
2014/12/25 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
Elasticsearch 数据类型及管理
2022/04/19 Python