vue实现移动滑块验证

本文实例为大家分享了vue实现移动滑块验证的具体代码,供大家参考,具体内容如下

记录一下今天的学习内容

<div class="solidBox" :class="{'solidBox1': validation}">
    <div @mousedown="solidStar" class="solid" :class="{'solid1': validation}"></div>
    {{!validation? textStart : textEnd}}
</div>
.solidBox {
          position: relative;
          display: flex;
          justify-content: center;
          align-items: center;
          margin: 20px 0;
          width: 100%;
          height: 35px;
          background-color: #999999;
          .solid {
            position: absolute;
            left: 0;
            display: flex;
            justify-content: center;
            align-items: center;
            width: 35px;
            height: 35px;
            cursor: pointer;
            border: 1px solid #666666;
            background: url("/img/切图2/arrow2.png") center no-repeat;
            background-color: #ffffff;
            box-sizing: border-box;
          }
          .solid1 {
            background: url("/img/切图2/ok.png") center no-repeat;
            background-size: 100%;
            border: 1px solid #358097;
          }
        }
        .solidBox1 {
          color: #ffffff;
          background-color: #1aad19;
        }

方法写在methods里面

//鼠标按下时
solidStar(e) {
      // console.log(e);
      // 获取当前DOM元素宽度 鼠标当前点击位置
      let solidDom = e.target;
      let moveStart = e.clientX;
      let solidDomWith = solidDom.offsetWidth;
      // 父节点减去滑块宽度获取滑块最大移动距离
      let MaxW = e.path[1].clientWidth - solidDomWith;
      // 设置判断条件 防止验证成功后鼠标移动方法继续被调用
      if (this.validation === true) {
        return false;
      }
      // 鼠标移动
      (document.onmousemove = e => {
        // 获取移动时鼠标距离浏览器左上角到当前位置的X轴距离
        let endX = e.clientX;
        // 从上面获取到的数据计算出鼠标移动的距离
        this.moveX = endX - moveStart;
        // 判断如果用户反方向移动将移动距离赋值为零
        if (this.moveX <= 0) {
          this.moveX = 0;
        }
        // 判断如果滑块移动距离大于最大宽度  给其赋值最大宽度
        if (this.moveX >= MaxW) {
          this.moveX = MaxW;
        }
        // 为了更好地体验 写上动画 要不都不写  不然其他动画会覆盖向右拖拽动作
        solidDom.style.transition = "0s all";
        solidDom.style.left = this.moveX + "px";
        // 很关键的地方 e.preventDefault()这个方法会关闭与当前事件关联的其他动作 只执行此事件
        e.preventDefault();
      }),
        // 鼠标抬起
        (document.onmouseup = () => {
          // 如果鼠标抬起后拖拽距离没到可移动距离最大值将返回起点0
          if (this.moveX !== MaxW) {
            solidDom.style.transition = ".5s linear";
            solidDom.style.left = 0;
          } else {
            // 如果成功设置判断条件
            this.validation = true;
          }
          // 动作完成后将事件清空
          document.onmousemove = null;
          document.onmouseup = null;
        });
    }
export default {
  name: "twologin",
  data() {
    return {
      loginBoxShow: true,
      isActive: 0,
      userName: "",
      psd: "",
      input1: "",
      input2: "",
      select: "",
      validation: false,
      textStart: "向右拖动滑块",
      textEnd: "验证成功",
      moveX: 0
    };
  },

最后写一点今天学到的知识点

  • event.screenX是屏幕左上角到鼠标当前位置的x轴距离
  • event.clientX是浏览器左上角到鼠标当前位置的x轴距离
  • event.offsetX是鼠标当前点击控件左上角到鼠标当前位置的x轴距离
  • evevt.preventDefault()

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

(0)

相关推荐

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

    vue项目注册登录页面遇到了一个需要滑块的功能,网上看了很多插件发现都不太好用,于是自己写了一个插件供大家参考: 用的是vue的自定义指令direcive,只需要在需要的组件里放入对应的标签嵌套即可: template: <template> <div> <div class="movebox" > <div class="movego"></div> <div class="txt&quo

  • 使用konva和vue-konva库实现拖拽滑块验证功能

    1. 在vue项目中安装konva和vue-konva库 npm install konva vue-konva --save-dev 2. 引入vue-konva库 import VueKonva from 'vue-konva': Vue.use(VueKonva) 3. 创建单独的滑块验证组件 Captcha.vue,在相应的页面中引入使用即可 <template> <v-stage :config="Config.stage"> <v-layer

  • Vue3+Vue-cli4项目中使用腾讯滑块验证码的方法

    简介: 滑块验证码相比于传统的图片验证码具有以下优点: 验证码的具体验证不需要服务端去验证,服务端只需要核验验证结果即可. 验证码的实现不需要我们去了解,也不需要我们去具体实现. 滑块验证码的安全程度相比于传统验证码高不少. ... 由于网络上和腾讯api文档中缺少关于vue3中组合式api怎么应用腾讯的滑块验证码,所以出此教程.本人也非vue大佬,对vue的理解也不过停留在初级使用的程度上,有错误之处,敬请指出. 开始: 首先,我们需要去腾讯云申请一个图形验证的api,使用场景中选择自己的使用

  • Vue集成阿里云做滑块验证的实践

    目录 前言 集成阿里云验证 前端需要什么 引入阿里云验证 封装一个验证组件 使用组件 思考 前言 滑块验证是比较常见的人机鉴别手段,但是自己做一时半会还真搞不出来,想想这玩意还挺难琢磨,怎么识别是否是人机呢?本文介绍Vue+阿里云验证做出这个小功能. 集成阿里云验证 前端需要什么 appkey scene 后端配合 引入阿里云验证 public/index.html <head>   <script src="https://g.alicdn.com/AWSC/AWSC/aws

  • vue实现简单滑块验证

    本文实例为大家分享了Vue滑块验证的实现,代码如下 <template> <div class="drag" ref="dragDiv"> <div class="drag_bg"></div> <div class="drag_text">{{confirmWords}}</div> <div ref="moveDiv" @mo

  • VUE接入腾讯验证码功能(滑块验证)备忘

    最近在用VUE做个简单的用户系统,登录注册需要验证码,想找个那种拖动的,找geetest居然已经不面向小客户了(或者说只有收费套餐). 腾讯防水墙的验证码免费使用,有2000/小时的免费额度,对于小网站完全足够了,阿里应该也有,我看discuz有插件直接能用,但没找到入口 腾讯的在这,和腾讯云无关:https://007.qq.com/captcha/#/  申请api很简单,QQ登录,创建应用,ID和secretkey就出来了,直接在文档里展示,赞一个. vue有人做了封装了geetest+腾

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

    vue验证滑块功能,在生活中很多地方都可以见到,那么使用起来非常方便,基于vue如何实现滑块验证呢?下面通过代码给大家讲解. 效果图如下所示: 拖动前 拖动后 代码引用的css与js都是线上的 将代码全部复制到一个html中可以直接打开,极其简单. 来分析一下代码 底色div上放了一个变色div再放一个提示字的div最后加一个滑块div 给滑块div绑定鼠标移动事件 <!DOCTYPE html> <html> <head> <meta charset="

  • vue实现登录时滑块验证

    本文实例为大家分享了vue实现登录时滑块验证的具体代码,供大家参考,具体内容如下 1.效果图 2. 新建 SliderCheck.vue组件 <template> <!--  拖动验证-->   <div class="slider-check-box">     <div class="slider-check" :class="rangeStatus ? 'success' : ''">    

  • vue实现移动滑块验证

    本文实例为大家分享了vue实现移动滑块验证的具体代码,供大家参考,具体内容如下 记录一下今天的学习内容 <div class="solidBox" :class="{'solidBox1': validation}">     <div @mousedown="solidStar" class="solid" :class="{'solid1': validation}"></

  • Vue表单验证插件的制作过程

    前言 前段时间,老大搭好了Vue的开发环境,于是我们愉快地从JQ来到了Vue.这中间做的时候,在表单验证上做的不开心,看到vue的插件章节,感觉自己也能写一个,因此就自己开始写了一个表单验证插件va.js. 当然为什么不找个插件呢? vue-validator呀. 1.我想了下,一个是表单验证是个高度定制化的东西,这种网上找到的插件为了兼顾各个公司的需求,所以加了很多功能,这些我们不需要.事实证明,vue-validator有50kb,而我写的va.js只有8kb. 2.另一个是,vue-val

  • 基于vue 实现token验证的实例代码

    vue-koa2-token 基于vue的 做了token验证 前端部分(对axios设置Authorization) import axios from 'axios' import store from '../store' import router from '../router' //设置全局axios默认值 axios.defaults.timeout = 6000; //6000的超时验证 axios.defaults.headers.post['Content-Type'] =

  • vue短信验证性能优化如何写入localstorage中

    平时我们在项目中进行注册等的时候,会经常用到短信验证的功能,但是现在现在很多短信验证都是存在下面几个问题,例如短信验证时间为60s的时候, 1. 当点击完按钮时,倒计时还没到60s过完时,刷新浏览器,验证码按钮又可以重新点击 2.当点击按钮倒计时开始,例如在50s的时候我关闭了浏览器,过了5s后,我在打开,此时时间倒计时的时间应该是45s左右,但是当重新打开浏览器的时候,按钮又可以重新点击了 为了解决上面的两个问题,就需要把时间都写到localstorage里面去,当打开页面的时候,就去loca

  • vue 表单验证按钮事件交由父组件触发的方法

    vue 表单验证按钮事件交由父组件触发,不直接再子组件上操作的方法 子组件: //内容部分 <Form ref="formCustom" :model="formCustom" :rules="ruleCustom" :label-width="80"> <FormItem label="Age" prop="age"> <Input type="

  • vue 登录滑动验证实现代码

    在没给大家讲解实现代码之前,先给大家分享效果图: 之前别人都是用jq写的,自己整理了一下开始使用 <el-form-item label="验证"> <div class="form-inline-input"> <div class="code-box" id="code-box"> <input type="text" name="code"

  • Vue中登录验证成功后保存token,并每次请求携带并验证token操作

    在vue中,可以用**Storage(sessionStorage,localStorage)**来存储token,也可以用vuex来存储(但要考虑页面刷新数据消失问题,可以在vuex用Storage), 下面介绍用localStorage来存储: 在登录请求成功后,会返回一个token值,用loaclStorage保存 localStorage.setItem('token',res.data.token) 在main.js中设置全局请求头和响应回来的判断 //设置axios请求头加入toke

  • vue表单验证之禁止input输入框输入空格

    测试小姐姐让输入框不允许输入空格,安排. 刚开始用的下面这个方法,因为我是电脑端f12的情况下调试移动端,所以下面这个方法可以实现禁止输入空格,于是就打包测试上线了,上线后才发现真机中不支持,应该是pc端和移动端事件不一样,所以如果你是pc端,可以使用下面这个方法. input上添加下方代码(我用的vant也一样,包括elemenui等) @keydown.native="keydown($event)" methods中写入下方代码 methods:{ // 禁止输入空格 keydo

  • antd+vue实现动态验证循环属性表单的思路

    希望实现查询表单的某些属性可以循环验证必填项: 需求: 1.名称,对比项,备注必填,默认为一行,可增加多行 2.根据名称,动态请求对比项列表,名称变化时,清空该行当前选择的对比项 思路:将整个搜索分成了两个表单,分别去做验证.一个是可动态添加的循环表单form,另一个为普通表单dateForm html <a-form :form="form" @keyup.enter.native='searchQuery'> <div class="dynamic-wr

  • vue实现滑动验证条

    本文实例为大家分享了vue实现滑动验证条的具体代码,供大家参考,具体内容如下 效果 代码 VerifySlider.vue <template>   <div     ref="dragDiv"     class="drag"   >     <div ref="drag_bg" class="drag_bg" />     <div ref="drag_text"

随机推荐