Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)


Posted in Javascript onAugust 24, 2018

vue验证滑块功能,在生活中很多地方都可以见到,那么使用起来非常方便,基于vue如何实现滑块验证呢?下面通过代码给大家讲解。

效果图如下所示:

Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)

拖动前

Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)

拖动后

代码引用的css与js都是线上的
将代码全部复制到一个html中可以直接打开,极其简单。
来分析一下代码
底色div上放了一个变色div再放一个提示字的div最后加一个滑块div
给滑块div绑定鼠标移动事件

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
  <style scoped>
   .drag {
    border-radius:30px;
    position: relative;
    background-color: #75CDF9;
    width: 300px;
    height: 34px;
    margin-left: 30px;
    margin-top: 100px;
    line-height: 34px;
    text-align: center;
   }
   .handler {
    border-radius:30px;
    position: absolute;
    top: 0px;
    left: 0px;
    width: 40px;
    height: 32px;
    border: 1px solid #ccc;
    cursor: move;
   }
   .handler_bg {
    background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==") no-repeat center;
   }
   .handler_ok_bg {
    background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==") no-repeat center;
   }
   .drag_bg {
    border-radius:30px;
    background-color: #13CE66;
    height: 34px;
    width: 0px;
   }
   .drag_text {
    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;
   }
  </style>
 </head>
 <body>
  <div id="app">
   <div class="drag" >
    <div class="drag_bg"></div>
    <div class="drag_text">{{confirmWords}}</div>
    <div @mousedown="mousedownFn($event)" class="handler handler_bg"></div>
   </div>
  </div>
  <script src="https://cdn.jsdelivr.net/npm/vue"></script>
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
  <script>
   var vm = new Vue({
    el: "#app",
    name: '',
    components: {},
    props: {},
    data() {
     return {
      beginClientX: 0,
      /*距离屏幕左端距离*/
      mouseMoveStata: false,
      /*触发拖动状态 判断*/
      maxwidth: 258,
      /*拖动最大宽度,依据滑块宽度算出来的*/
      confirmWords: '拖动滑块验证',
      /*滑块文字*/
      confirmSuccess: false, /*验证成功判断*/
     }
    },
    created() {},
    watch: {
    },
    methods: {
     mousedownFn: function(e) {
      this.mouseMoveStata = true;
      this.beginClientX = e.clientX;
     }, //按下滑块函数 
     successFunction() {
      $(".handler").removeClass('handler_bg').addClass('handler_ok_bg');
      this.confirmWords = '验证通过'
      $(".drag").css({
       'color': '#fff'
      });
      $(".drag").css({
       'background-color': '#13CE66'
      });
      $(".handler").css({
       'left': this.maxwidth
      });
      $(".drag_bg").css({
       'width': this.maxwidth
      });
      $('body').unbind('mousemove');
      $('body').unbind('mouseup');
      this.confirmSuccess = true;
     } //验证成功函数 
    },
    mounted() {
     $('body').on('mousemove', (e) => {
      //拖动,这里需要用箭头函数,不然this的指向不会是vue对象 
      if(this.mouseMoveStata) {
       var width = e.clientX - this.beginClientX;
       if(width > 0 && width <= this.maxwidth) {
        $(".handler").css({
         'left': width
        });
        $(".drag_bg").css({
         'width': width
        });
       } else if(width > this.maxwidth) {
        this.successFunction();
       }
      }
     });
     $('body').on('mouseup', (e) => {
      //鼠标放开 
      this.mouseMoveStata = false;
      var width = e.clientX - this.beginClientX;
      if(width < this.maxwidth) {
       $(".handler").css({
        'left': 0
       });
       $(".drag_bg").css({
        'width': 0
       });
      }
     })
    }
   });
  </script>
 </body>
</html>

总结

以上所述是小编给大家介绍的Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javaScript 读取和设置文档元素的样式属性
Apr 14 Javascript
Javascript 实现TreeView CheckBox全选效果
Jan 11 Javascript
一个基于jQuery的树型插件(OrangeTree)使用介绍
May 03 Javascript
javascript基于DOM实现权限选择实例分析
May 14 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 Javascript
php输出全部gb2312编码内的汉字方法
Mar 04 Javascript
angularJS之$http:与服务器交互示例
Mar 17 Javascript
Vue父子模版传值及组件传值的三种方法
Nov 27 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
May 13 Javascript
java实现单链表增删改查的实例代码详解
Aug 30 Javascript
原生js实现贪食蛇小游戏的思路详解
Nov 26 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
vue项目部署到Apache服务器中遇到的问题解决
Aug 24 #Javascript
You might like
终于听上了直流胆调频
2021/03/02 无线电
理解php Hash函数,增强密码安全
2011/02/25 PHP
php GeoIP的使用教程
2011/03/09 PHP
php多文件上传实现代码
2014/02/20 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
php判断表是否存在的方法
2015/06/18 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
python 多线程重启方法
2019/02/18 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
django框架cookie和session用法实例详解
2019/12/10 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
关于python中的xpath解析定位
2020/03/06 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
内刊编辑求职自荐书范文
2014/02/19 职场文书
售后客服工作职责
2014/06/16 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle