当前位置:首页 > 日记 > 正文

vue-cli 自定义指令directive 添加验证滑块示例

vue-cli 自定义指令directive 添加验证滑块示例

vue项目注册登录页面遇到了一个需要滑块的功能,网上看了很多插件发现都不太好用,于是自己写了一个插件供大家参考;

用的是vue的自定义指令direcive,只需要在需要的组件里放入对应的标签嵌套即可;

template:

<template><div><div class="movebox" >        <div class="move"></div>        <div class="txt" id="txt">拖动滑块验证</div>        <div class="move moveBefore" v-move></div> </div><div class="movebox" >        <div class="move"></div>        <div class="txt" id="txt">拖动滑块验证</div>        <div class="move moveBefore" v-move></div> </div></div></template>

项目中使用的是scss;

css代码:

<style lang="scss" scoped>.movebox{  position: relative;  background-color: #e8e8e8;  width: 300px;  height: 34px;  line-height: 34px;  text-align: center;  .txt{  position: absolute;  top: 0px;  width: 300px;  -moz-user-select: none;  -webkit-user-select: none;  user-select: none;  -o-user-select: none;  -ms-user-select: none;  }  .move{   background-color: #7ac23c;   height: 34px;   width: 0px;  }   .move{    position: absolute;  top: 0px;  left: 0px;  width: 40px;  height: 34px;  border: 1px solid #ccc;  cursor: move;   }   .moveBefore{   background: #fff url("data:image/png;base64,iVBORw0KGAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==") no-repeat center;       }   .moveSuccess{    background: #fff url("data:image/png;base64,iVBORw0KGAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4jnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==") no-repeat center;       }  }</style>

jquery已经在全局引入,需要jquery全局引入的,可以看我的上一篇博客,里面有jquery的引入;

script:

<script>export default { components: {   }, data() {  return {      } }, mounted() {  //console.log($('选择器')) }, methods: {    }, directives: {  move(el) {    el.onmousedown = function(e) {    var X = e.clientX - el.offsetLeft    document.onmousemove = function(e) {      var endx = e.clientX - X    el.className = 'move moveBefore'    el.style.left = endx + 'px'    // console.log(el.parentNode.children[0])    var width = $('.movebox').width() - $('.move').width()     el.parentNode.children[0].style.width = endx + 'px'     el.parentNode.children[1].innerHTML = '拖动滑块验证'    //临界值小于    if (endx <= 0) {    el.style.left = 0 + 'px'     el.parentNode.children[0].style.width = 0 + 'px'     //$('.move').width(0)    }    //临界值大于    // console.log(el.style.left)    if (parseInt(el.style.left) >= width) {    el.style.left = width + 'px'     el.parentNode.children[0].style.width = width + 'px'     el.parentNode.children[1].innerHTML = '验证通过'    el.className = 'move moveSuccess'    el.onmousedown = null    }    }  }  document.onmouseup = function() {    document.onmousemove = null  }  } }}</script>

 谢了近20分钟,调试好了,效果还是比较可以的:

用的gif制作软件略卡;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

详解webpack3如何正确引用并使用jQ

详解webpack3如何正确引用并使用jQ

引用,详解,如何正确,电脑软件,jQuery,经过百度、谷歌、SF、stackoverflow后终于将webpack3引用jQuery的问题解决了,网上的重复文章太多,大多也都过时了,webpack这两年发展也非常快,大多都是1.0版本的文章,与时俱进的很少,刚刚看了一眼现在已经发…

excel表格的图表制作教程

excel表格的图表制作教程

图表,表格,制作教程,电脑软件,excel,  Excel制作图表该如何制作呢?接下来是小编为大家带来的excel表格的图表制作教程,供大家参考。excel表格的图表制作教程:  图表制作步骤1:【新建】Excel文档图表制作步骤2:合并单元格图表制作步骤3:录入…

PPT2007中怎么设置幻灯片的半透明

PPT2007中怎么设置幻灯片的半透明

设置,半透明,幻灯片,背景,效果,  PPT中的半透明背景效果类似于Word中的图片水印,有一种若隐若现的朦胧美。在PPT中应用这种半透明效果可以为幻灯片增色。以下是小编为您带来的关于PPT2007中设置幻灯片的半透明背景效果,希望对您有所帮助。P…

Iscrool下拉刷新功能实现方法 | 推

Iscrool下拉刷新功能实现方法 | 推

方法,下拉刷新,功能实现,推荐,电脑软件,简易下拉刷新实现方法css样式:*{ margin: 0px; padding: 0px; } #wrapper{ width: 100%; height: 150px; border: 1px solid red; over…

浅谈jsp中的9个隐含对象

浅谈jsp中的9个隐含对象

对象,浅谈,电脑软件,jsp,在JSP中一共有9个隐含对象,这个9个对象我可以在JSP中直接使用。因为在service方法已经对这个九个隐含对象进行声明及赋值,所以可以在JSP中直接使用。- pageContext类型:PageContext代表:当前页面的上下文作用:可以获取到…

Bootstrap笔记之缩略图、警告框实

Bootstrap笔记之缩略图、警告框实

警告框,缩略图,详解,实例,笔记, 1. 基础缩略图给a标签添加类class="thumbnail"如下:<div class="row"> <div class="col-md-3 col-sm-6"> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nof…

excel表格使用填充功能的教程

excel表格使用填充功能的教程

教程,填充,表格,功能,电脑软件,  Excel中如何利用填充功能把序列给填充完整呢?下面是由小编分享的excel表格使用填充功能的教程,以供大家阅读和学习。excel表格使用填充功能的教程:  使用填充功能步骤1:在EXCEL中,我们可以很轻松的让其自动…

js代码延迟一定时间后执行一个函数

js代码延迟一定时间后执行一个函数

执行,延迟,实例,一个函数,代码,实例如下: setTimeout(funcName,500); function funcName() { xxxxxx; }0.5秒后执行funcName(),只执行一次setInterval(funcName,5000); 每隔5秒执行一次funcName()以上这篇js代码延迟一定时间后…

Word中进行设置页面格式的操作技巧

Word中进行设置页面格式的操作技巧

设置,操作技巧,页面,格式,操作步骤,  编辑文档时,必须把东西放在一页里面,但是字数又超出了,今天,小编就教大家在Word中进行设置页面格式的操作技巧。Word中进行设置页面格式的操作步骤双击word进入word编辑视图,进行编辑。单击&ldquo;文件&rd…

怎么在word文档中添加漂亮的松树边

怎么在word文档中添加漂亮的松树边

边框,文档,松树,漂亮,电脑软件,  word中添加边框是很容易的,因为它自带了很多漂亮的边框样式。word文档为了更美观,可以自定义添加边框。以下是小编为您带来的关于word添加漂亮的松树边框,希望对您有所帮助。word添加漂亮的松树边框1、打开w…

js中Number数字数值运算后值不对的

js中Number数字数值运算后值不对的

运算,解决方法,数字,数值,电脑软件,问题:37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数)我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998怎么会这样,两个只有一位小数的数字相乘,怎么可能多出这么小数…

通过命令行创建vue项目的方法

通过命令行创建vue项目的方法

项目,方法,命令行,电脑软件,vue,最近想要学习vue,正好看到资料,如何通过命令创建vue项目的方法,就留个笔记环境要求: 安装有 Node.js、 vue、vue-cli 。创建项目:vue init webpack projectName进入项目,下载依赖:npm install 或者 cnpm install运…