亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue如何實現左滑圖片驗證功能

發布時間:2023-04-04 11:25:49 來源:億速云 閱讀:159 作者:iii 欄目:開發技術

這篇“vue如何實現左滑圖片驗證功能”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vue如何實現左滑圖片驗證功能”文章吧。

一、安裝

使用 npm 安裝 vue-monoplasty-slide-verify 插件。

npm i vue-monoplasty-slide-verify --savve
cnpm i vue-monoplasty-slide-verify --savve //鏡像安裝

接著我們在 main.js 中引入。

import slideVerify from "vue-monoplasty-slide-verify";
Vue.use(slideVerify);

二、使用

在使用之前我們先來看看它的一些屬性和回調函數。

屬性

參數描述
l滑動碎片的大小
r滑動碎片的圓角
w畫布的寬
h畫布的高
imgs背景圖數組,默認值 [],為 [] 時隨機加載插件圖片
accuracy滑動驗證的誤差范圍,默認值 5
show是否顯示刷新按鈕,默認值 true

回調函數

函數名描述
success返回時間參數,單位為毫秒
fail驗證不通過時的回調函數
refresh點擊刷新按鈕后的回調函數
again檢測到非人為操作滑動時觸發的回調函數
fulfilled刷新成功之后的回調函數

在父組件里如果需要重置,可以在父組件中調用子組件 reset() 方法。

1. 指定 ref 的值

<slide-verify ref="slideblock" ></slide-verify>

2. 調用

this.$refs.slideblock.reset();

以上是我們實現這個功能基本都會用到的一些配置,感興趣的同學可以去 官網文檔 查看更詳細的內容。下面我們試著來用代碼實現這個功能。

為了方便在項目中使用,我直接將其封裝成公共的組件,這樣無論在任何頁面都可以直接引入使用,如果需要修改配置,可通過 propsemit 傳參修改在組件中寫死的屬性值。

封裝文件(子組件)

文件路徑: src/components/verification/index.vue

<template>
  <div>
    <!-- vant 彈框組件,也可自定義彈框 -->
    <van-popup v-model="isShowSlide" :visible.sync="isShowSlide" @close="$emit('update:dialogChild', false)">
      <div class="contantBox">
        <p>安全驗證</p>
        <slide-verify :l="canvas.l" :r="canvas.r" :w="canvas.w" :h="canvas.h" ref="slideblock" @again="onAgain" @fulfilled="onFulfilled"
          @success="onSuccess" @fail="onFail" @refresh="onRefresh" :accuracy="3" :imgs="imgs" slider-text="拖動滑塊完成拼圖">
        </slide-verify>
        <!-- 耗時 -->
        <div>{{timeDate}}</div>
      </div>
    </van-popup>
  </div>
</template>

<script>
export default {
  data() {
    return {
      timeDate: "", //耗時
      canvas: {
        l: 28, //滑動碎片的大小
        r: 7, //滑動碎片的圓角
        w: 300, //畫布的寬
        h: 160, //畫布的高
      },
      isShowSlide: false, //彈框顯隱
      imgs: [
        require("@/assets/1.png"),
        require("@/assets/2.png"),
        require("@/assets/3.png"),
      ], //自定義的隨機圖片
      timer: null, //定時器
    };
  },
  props: {
    dialogChild: {
      type: Boolean,
      default: false,
    },
  },
  watch: {
    dialogChild: {
      handler(newName, oldName) {
        this.isShowSlide = newName;
      },
      deep: true,
    },
  },
  methods: {
    // 返回時間參數,單位為毫秒
    onSuccess(times) {
      this.$emit("successOn", times);
      this.timeDate = "驗證通過,耗時" + (times / 1000).toFixed(1) + "s";
      // 成功后關閉彈框
      this.timer = setInterval(() => {
        this.isShowSlide = false;
      }, 1000);
    },
    // 驗證不通過時的回調函數
    onFail() {
      this.$emit("failOn");
      console.log("驗證不通過");
      this.timeDate = "";
    },
    // 點擊刷新按鈕后的回調函數
    onRefresh() {
      this.$emit("refreshOn");
      console.log("點擊了刷新圖標");
      this.timeDate = "";
    },
    // 刷新成功之后的回調函數
    onFulfilled() {
      this.$emit("fulfilledOn");
      console.log("刷新成功");
    },
    // 檢測到非人為操作滑動時觸發的回調函數
    onAgain() {
      this.$emit("againOn");
      console.log("檢測到非人為操作的哦");
      // 刷新
      this.$refs.slideblock.reset();
    },
    // 父組件調用刷新方法(每次進來重置組件)
    handleClick() {
      this.$nextTick(() => {
        this.timeDate = "";
        clearInterval(this.timer);//清除定時器
        this.$refs.slideblock.reset();
      });
    },
  },
};
</script>
<style scoped>
p {
  display: flex;
  justify-content: center;
  font-size: 15px;
  margin: 8px 0px;
}
.contantBox {
  padding: 0px 8px 8px 8px;
}
</style>

組件內使用(父組件)

<template>
  <div>
    <!-- 使用組件 -->
    <van-button @click="verifyOn" round color="linear-gradient(to right,#FE566D, #F83D2A)" type="primary" block>獲取驗證碼</van-button>
    <!-- 如若想要修改其它參數通過props動態傳值即可 -->
    <verification ref="parent" :dialogChild.sync="isShowSlide" />
  </div>
</template>

<script>
// 引入組件
import verification from "@/components/verification";
export default {
  data() {
    return {
      isShowSlide: false,
    };
  },
  components: {
    verification,
  },
  methods: {
    // 點擊獲取驗證碼按鈕
    verifyOn() {
      this.isShowSlide = true;
      // 每次點擊都觸發一下重置驗證組件的方法
      this.$refs.parent.handleClick();
    },
  },
};
</script>

實現效果

vue如何實現左滑圖片驗證功能

以上就是關于“vue如何實現左滑圖片驗證功能”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

吉安市| 大安市| 纳雍县| 鄂伦春自治旗| 鲁山县| 施秉县| 郧西县| 石楼县| 平武县| 马边| 阳春市| 页游| 肇州县| 天长市| 渝中区| 东乡族自治县| 崇左市| 乌鲁木齐市| 垦利县| 双峰县| 香港| 收藏| 同江市| 江山市| 浦江县| 平阳县| 车致| 蒲江县| 吉水县| 阳曲县| 寻甸| 贵阳市| 高青县| 宽甸| 宣恩县| 桦甸市| 堆龙德庆县| 屯昌县| 南皮县| 顺昌县| 华容县|