Vue3滑动到最右验证功能实现

 更新时间:2024年06月14日 15:59:10   作者:生活真难  
在登录页面需要启动向右滑块验证功能,遇到这样的需求怎么实现呢,下面小编通过示例代码给大家分享Vue3滑动到最右验证功能实现,感兴趣的朋友一起看看吧

1、思路

1、在登录页面需要启动向右滑块验证

2、效果图

3、文章地址:滑动验证码的实现-vue-simple-verify

2、成分分析

1、由三块构成,分别是底部条、拖动条、拖动移动部分

2、底部条:整体容器,包括背景、边框和文字(请按住滑块,拖动到最右边)

3、拖动条:图片+边框+背景色即可

4、完成部分:背景、边框和文字(验证完成)

3、事件分析

1、鼠标按下事件:记录鼠标位置以及状态

2、鼠标移动事件:计算滑块位置

3、鼠标离开事件:更新状态至初始状态

4、鼠标抬起事件:更新状态至初始状态

4、效果图

5、代码

1、SlideVerify.vue文件

<template>
  <div
    ref="sliderContainer"
    @mousemove="onMouseMove"
    @mouseup="onMouseUp"
    class="slider-verify-container"
    @mouseleave="onMouseLeave"
  >
    <span v-if="blockState === 0">请按住滑块,拖动到最右边</span>
    <div
      @mousedown="onMouseDown"
      :style="{ left: leftP }"
      class="slider-verify-block"
    />
    <div :style="{ width: leftP }" class="slider-verify-complete">
      <span v-if="blockState === 2">验证成功</span>
    </div>
  </div>
</template>
<script setup>
import { ref, defineEmits } from "vue";
const emit = defineEmits(["success", "failed"]);
const leftP = ref("0");
const blockState = ref(0);
const startP = ref(undefined);
const sliderContainer = ref(undefined);
const onMouseDown = (e) => {
  if (blockState.value !== 2) {
    leftP.value = "0";
    blockState.value = 1;
    startP.value = {
      clientX: e.clientX,
    };
  } else {
    leftP.value = "0";
    blockState.value = 0;
  }
};
const onMouseMove = (e) => {
  if (blockState.value === 1) {
    let width = e.clientX - startP.value.clientX;
    if (width + 56 > 400) {
      leftP.value = 400 - 56 + "px";
      blockState.value = 2;
      emit("success");
    } else {
      leftP.value = width + "px";
    }
  }
};
const onMouseUp = (e) => {
  if (blockState.value !== 2) {
    leftP.value = "0";
    blockState.value = 0;
    emit("failed");
  }
};
const onMouseLeave = (e) => {
  if (blockState.value !== 2) {
    leftP.value = "0";
    blockState.value = 0;
    emit("failed");
  }
};
</script>
<style lang="scss" scoped>
.slider-verify-container {
  width: 100%;
  height: 56px;
  background-color: transparent;
  position: relative;
  border: solid 1px #20cccf;
  text-align: center;
  color: #20cccf;
  line-height: 56px;
  user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -webkit-user-select: none;
}
.slider-verify-complete {
  width: 0;
  height: 56px;
  position: absolute;
  background-color: #00e6f14f;
  left: 0;
  top: 0;
}
.slider-verify-block {
  width: 56px;
  height: 56px;
  background-image: url("@/assets/images/login6/arrow.png");
  background-color: white;
  position: absolute;
  left: 0;
  top: -1px;
  border: solid 1px #20cccf;
  background-size: 50%;
  background-repeat: no-repeat;
  background-position: center;
}
</style>

2、调用代码

<slide-verify @success="onVerifySuccess" @failed="onVerifyFailed" />

到此这篇关于Vue3滑动到最右验证功能的文章就介绍到这了,更多相关Vue3滑动到最右验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 安装vue无法运行、此系统无法运行脚本问题及解决

    安装vue无法运行、此系统无法运行脚本问题及解决

    这篇文章主要介绍了安装vue无法运行、此系统无法运行脚本问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue-dialog的弹出层组件

    vue-dialog的弹出层组件

    这篇文章主要为大家详细介绍了vue-dialog的弹出层组件,可以通过npm引用的组件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • vue实现的网易云音乐在线播放和下载功能案例

    vue实现的网易云音乐在线播放和下载功能案例

    这篇文章主要介绍了vue实现的网易云音乐在线播放和下载功能,结合具体实例形式分析了网易云音乐相关接口调用与操作技巧,需要的朋友可以参考下
    2019-02-02
  • Vue3处理大数据量渲染和优化的方法小结

    Vue3处理大数据量渲染和优化的方法小结

    在现代Web应用中,随着用户数据和交互的复杂性增加,如何高效地处理大数据量渲染成为了前端开发的重要环节,本文将以Vue 3为例,探讨如何优化大数据量渲染,提升应用性能,需要的朋友可以参考下
    2024-07-07
  • Vue检测屏幕变化来改变不同的charts样式实例

    Vue检测屏幕变化来改变不同的charts样式实例

    这篇文章主要介绍了Vue检测屏幕变化来改变不同的charts样式实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Vue3实现全局loading指令的示例详解

    Vue3实现全局loading指令的示例详解

    这篇文章主要介绍了Vue3实现全局loading指令,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • vue-router解决相同路径跳转报错的问题

    vue-router解决相同路径跳转报错的问题

    这篇文章主要介绍了vue-router解决相同路径跳转报错的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vue3开启摄像头并进行拍照的实现示例

    vue3开启摄像头并进行拍照的实现示例

    本文主要介绍了vue3开启摄像头并进行拍照的实现示例,主要是使用navigator.mediaDevices.getUserMedia这个API来实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • vue解决花括号数据绑定不成功的问题

    vue解决花括号数据绑定不成功的问题

    今天小编就为大家分享一篇vue解决花括号数据绑定不成功的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • element中el-cascader级联选择器只有最后一级可以多选

    element中el-cascader级联选择器只有最后一级可以多选

    本文主要介绍了element中el-cascader级联选择器只有最后一级可以多选,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01

最新评论