最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue?實現(xiàn)左滑圖片驗證功能

 更新時間:2023年04月03日 11:04:48   作者:水星記_  
網(wǎng)頁中滑動圖片驗證一直是各大網(wǎng)站、移動端的主流校驗方式,其主要作用是為了區(qū)分人和機器以及為了防止機器人程序暴力登錄或攻擊從而設置的一種安全保護方式,這篇文章主要介紹了vue?實現(xiàn)左滑圖片驗證,需要的朋友可以參考下

前言

眾所周知,網(wǎng)頁中滑動圖片驗證一直是各大網(wǎng)站、移動端的主流校驗方式,其主要作用是為了區(qū)分人和機器以及為了防止機器人程序暴力登錄或攻擊從而設置的一種安全保護方式。從開發(fā)的角度來看要想實現(xiàn)這個功能還是需要一點時間的,但其實網(wǎng)上已經(jīng)有很多專門針對圖片滑動驗證功能的插件了,今天就給大家分享一款好用的插件 ----- vue-monoplasty-slide-verify。

一、安裝

使用 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);

二、使用

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

屬性

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

回調函數(shù)

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

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

1. 指定 ref 的值

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

2. 調用

this.$refs.slideblock.reset();

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

為了方便在項目中使用,我直接將其封裝成公共的組件,這樣無論在任何頁面都可以直接引入使用,如果需要修改配置,可通過 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: {
    // 返回時間參數(shù),單位為毫秒
    onSuccess(times) {
      this.$emit("successOn", times);
      this.timeDate = "驗證通過,耗時" + (times / 1000).toFixed(1) + "s";
      // 成功后關閉彈框
      this.timer = setInterval(() => {
        this.isShowSlide = false;
      }, 1000);
    },
    // 驗證不通過時的回調函數(shù)
    onFail() {
      this.$emit("failOn");
      console.log("驗證不通過");
      this.timeDate = "";
    },
    // 點擊刷新按鈕后的回調函數(shù)
    onRefresh() {
      this.$emit("refreshOn");
      console.log("點擊了刷新圖標");
      this.timeDate = "";
    },
    // 刷新成功之后的回調函數(shù)
    onFulfilled() {
      this.$emit("fulfilledOn");
      console.log("刷新成功");
    },
    // 檢測到非人為操作滑動時觸發(fā)的回調函數(shù)
    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>
    <!-- 如若想要修改其它參數(shù)通過props動態(tài)傳值即可 -->
    <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;
      // 每次點擊都觸發(fā)一下重置驗證組件的方法
      this.$refs.parent.handleClick();
    },
  },
};
</script>

實現(xiàn)效果

在這里插入圖片描述

到此這篇關于vue 實現(xiàn)左滑圖片驗證的文章就介紹到這了,更多相關vue 左滑圖片驗證內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue雙向綁定及觀察者模式詳解

    vue雙向綁定及觀察者模式詳解

    這篇文章主要介紹了vue雙向綁定及觀察者模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Vue多系統(tǒng)切換實現(xiàn)方案

    Vue多系統(tǒng)切換實現(xiàn)方案

    本篇文章給大家分享了關于Vue多系統(tǒng)切換實現(xiàn)的解決方案,對此有需要的朋友可以跟著參考學習下。
    2018-06-06
  • vue2.0使用swiper組件實現(xiàn)輪播的示例代碼

    vue2.0使用swiper組件實現(xiàn)輪播的示例代碼

    下面小編就為大家分享一篇vue2.0使用swiper組件實現(xiàn)輪播的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue父組件觸發(fā)事件改變子組件的值的方法實例詳解

    vue父組件觸發(fā)事件改變子組件的值的方法實例詳解

    這篇文章主要介紹了vue父組件觸發(fā)事件改變子組件的值的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • vuex中store存儲store.commit和store.dispatch的區(qū)別及說明

    vuex中store存儲store.commit和store.dispatch的區(qū)別及說明

    這篇文章主要介紹了vuex中store存儲store.commit和store.dispatch的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vuex之理解Getters的用法實例

    Vuex之理解Getters的用法實例

    這篇文章主要介紹了Vuex之理解Getters的用法實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • vue如何使用async、await實現(xiàn)同步請求

    vue如何使用async、await實現(xiàn)同步請求

    這篇文章主要介紹了vue如何使用async、await實現(xiàn)同步請求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 使用imba.io框架得到比 vue 快50倍的性能基準

    使用imba.io框架得到比 vue 快50倍的性能基準

    imba 是一種新的編程語言,可以編譯為高性能的 JavaScript??梢灾苯佑糜?Web 編程(服務端與客戶端)開發(fā)。這篇文章主要介紹了使用imba.io框架,得到比 vue 快50倍的性能基準,需要的朋友可以參考下
    2019-06-06
  • vue的組件通訊方法總結大全

    vue的組件通訊方法總結大全

    這篇文章主要為大家介紹了非常全面vue的組件通訊方法總結,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • vue Tab切換以及緩存頁面處理的幾種方式

    vue Tab切換以及緩存頁面處理的幾種方式

    這篇文章主要介紹了vue Tab切換以及緩存頁面處理的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11

最新評論

辽宁省| 阿拉尔市| 客服| 普安县| 巴林左旗| 个旧市| 龙南县| 榆中县| 和静县| 泰州市| 铁岭县| 新竹县| 莆田市| 阳谷县| 荔浦县| 石门县| 寿光市| 沅江市| 梅河口市| 阿克苏市| 浦县| 利辛县| 礼泉县| 高唐县| 正宁县| 安仁县| 容城县| 安乡县| 广平县| 称多县| 明星| 丰台区| 城口县| 禹州市| 安仁县| 锦州市| 宣城市| 山丹县| 德阳市| 高雄市| 鄄城县|