欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue滑塊解鎖組件使用方法詳解

 更新時間:2022年03月07日 09:45:22   作者:皮蛋很白  
這篇文章主要為大家詳細(xì)介紹了Vue滑塊解鎖組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Vue滑塊解鎖組件的使用,供大家參考,具體內(nèi)容如下

依據(jù) JS拖動滑塊驗(yàn)證 開發(fā)的 Vue 滑塊解鎖組件。

<template>
? <div ref="wrap" class="slider-unlock">
? ? <div class="before">請按住滑塊,拖動到最右邊</div>
? ? <div ref="after" class="after">
? ? ? <div class="after-inner">{{ success?'驗(yàn)證成功':'請按住滑塊,拖動到最右邊' }}</div>
? ? </div>
? ? <div ref="slider" class="slider" :class="{'is-success': success}" />
? </div>
</template>

<script>
export default {
? name: 'SliderUnlock',
? data() {
? ? return {
? ? ? success: false,
? ? ? clear: null,
? ? }
? },
? mounted() {
? ? this.init()
? },
? beforeDestroy() {
? ? this.clear && this.clear()
? },
? methods: {
? ? init() {
? ? ? // 獲取 dom
? ? ? const after = this.$refs.after
? ? ? const slider = this.$refs.slider
? ? ? const wrap = this.$refs.wrap
? ? ? // 設(shè)置after-inner的固定寬度
? ? ? after.childNodes[0].style.width = wrap.offsetWidth + 'px'
? ? ? // 滑塊移動最大位置
? ? ? const limit = wrap.offsetWidth - slider.offsetWidth

? ? ? // 實(shí)時計(jì)算滑塊的偏移量
? ? ? let offsetX
? ? ? // 點(diǎn)擊滑塊時的鼠標(biāo)X位置
? ? ? let initX

? ? ? // 頁面鼠標(biāo)移動事件
? ? ? const docMousemoveHandler = e => {
? ? ? ? // 獲取移動后鼠標(biāo)實(shí)時位置
? ? ? ? const moveX = e.clientX
? ? ? ? // 計(jì)算滑塊應(yīng)該移動的偏移量
? ? ? ? offsetX = moveX - initX

? ? ? ? // 限制上下限
? ? ? ? if (offsetX < 0) {
? ? ? ? ? offsetX = 0
? ? ? ? } else if (offsetX > limit) {
? ? ? ? ? offsetX = limit
? ? ? ? }

? ? ? ? // 移動滑塊
? ? ? ? slider.style.left = offsetX + 'px'
? ? ? ? // 修改高亮背景寬度
? ? ? ? after.style.width = offsetX + 'px'

? ? ? ? if (offsetX >= limit) {
? ? ? ? ? this.success = true
? ? ? ? ? this.$emit('success')
? ? ? ? ? document.removeEventListener('mousemove', docMousemoveHandler)
? ? ? ? ? slider.removeEventListener('mousedown', sliderMousedownHandler)
? ? ? ? }
? ? ? }

? ? ? // 頁面鼠標(biāo)松開事件
? ? ? const docMouseupHandler = e => {
? ? ? ? // 解綁事件
? ? ? ? document.removeEventListener('mousemove', docMousemoveHandler)
? ? ? ? // 重置滑塊
? ? ? ? if (offsetX < limit) {
? ? ? ? ? slider.style.left = 0
? ? ? ? ? after.style.width = 0
? ? ? ? }
? ? ? }

? ? ? // 滑塊點(diǎn)擊事件
? ? ? const sliderMousedownHandler = e => {
? ? ? ? // 獲取鼠標(biāo)位置
? ? ? ? initX = e.clientX
? ? ? ? // 綁定頁面的鼠標(biāo)移動事件
? ? ? ? document.addEventListener('mousemove', docMousemoveHandler)
? ? ? }

? ? ? // 綁定滑塊點(diǎn)擊事件
? ? ? slider.addEventListener('mousedown', sliderMousedownHandler)

? ? ? // 頁面鼠標(biāo)松開事件
? ? ? document.addEventListener('mouseup', docMouseupHandler)

? ? ? // 定義清理方法
? ? ? this.clear = () => {
? ? ? ? document.removeEventListener('mousemove', docMousemoveHandler)
? ? ? ? slider.removeEventListener('mousedown', sliderMousedownHandler)
? ? ? ? document.removeEventListener('mouseup', docMouseupHandler)
? ? ? }
? ? },
? },
}
</script>

<style lang="less" scoped>
.slider-unlock{
? height: 45px;
? background: #E1E1E1;
? border-radius: 4px;
? position: relative;
? overflow: hidden;
? border: 1px solid #CCCCCC;
? box-sizing: border-box;
? user-select: none;
? .before, .after {
? ? position: absolute;
? ? margin: -1px 0 0 -1px;
? ? top: 0;
? ? left: 0;
? ? z-index: 1;
? ? height: 100%;
? ? box-sizing: content-box;
? ? font-size: 14px;
? ? font-weight: bold;
? ? line-height: 43px;
? ? text-align: center;
? }
? .before {
? ? width: 100%;
? ? color: #333;
? ? padding: 0 1px 1px 0;
? }
? .after {
? ? width: 0;
? ? overflow: hidden;
? ? padding: 0 0 1px 0;
? ? &-inner {
? ? ? position: absolute;
? ? ? width:100%;
? ? ? height: 100%;
? ? ? color: #fff;
? ? ? background-color: #40C057;
? ? }
? }
? .slider{
? ? position: absolute;
? ? margin: -1px 0 0 -1px;
? ? top: 0;
? ? left: 0;
? ? z-index: 3;
? ? width: 70px;
? ? height: 45px;
? ? border: 1px solid #CCC;
? ? cursor: pointer;
? ? background: no-repeat center center #fff;
? ? background-image: url(~@/imgs/icon-allow-right.png);
? ? &.is-success {
? ? ? background-image: url(~@/imgs/icon-success.png);
? ? }
? }
}
</style>

使用:

<SliderUnlock @success="handler" />

效果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue輪播圖插件vue-awesome-swiper

    vue輪播圖插件vue-awesome-swiper

    這篇文章主要為大家詳細(xì)介紹了vue輪播圖插件vue-awesome-swiper,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Vue利用mockjs編寫假數(shù)據(jù)并應(yīng)用的問題記錄

    Vue利用mockjs編寫假數(shù)據(jù)并應(yīng)用的問題記錄

    這篇文章主要介紹了Vue利用mockjs編寫假數(shù)據(jù)并應(yīng)用,本文通過實(shí)例代碼給大家詳細(xì)講解,對Vue?mockjs數(shù)據(jù)相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • vue中清除定時器的方法實(shí)例詳解

    vue中清除定時器的方法實(shí)例詳解

    很多情況下,進(jìn)入和退出vue界面,都沒有清除定時器,從而導(dǎo)致有很多定時器一起工作,這樣肯定是不行的,下面這篇文章主要給大家介紹了關(guān)于vue中清除定時器的方法,需要的朋友可以參考下
    2023-02-02
  • 前端低代碼form-generator實(shí)現(xiàn)及新增自定義組件詳解

    前端低代碼form-generator實(shí)現(xiàn)及新增自定義組件詳解

    這篇文章主要給大家介紹了關(guān)于前端低代碼form-generator實(shí)現(xiàn)及新增自定義組件的相關(guān)資料,form-generator是一個開源的表單生成器,可以幫助我們快速構(gòu)建各種表單頁面,需要的朋友可以參考下
    2023-11-11
  • 關(guān)于Vue源碼vm.$watch()內(nèi)部原理詳解

    關(guān)于Vue源碼vm.$watch()內(nèi)部原理詳解

    這篇文章主要介紹了關(guān)于Vue源碼vm.$watch()內(nèi)部原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue axios調(diào)用接口方法報(bào)錯500 internal server error的兩種解決方法

    vue axios調(diào)用接口方法報(bào)錯500 internal server err

    前端使用axios 訪問后端接口時報(bào)錯,在瀏覽器中點(diǎn)擊紅色的報(bào)錯數(shù)據(jù),本文給大家分享vue axios調(diào)用接口方法報(bào)錯500 internal server error的兩種解決方法,感興趣的朋友一起看看吧
    2023-10-10
  • vue3.0 CLI - 1 - npm 安裝與初始化的入門教程

    vue3.0 CLI - 1 - npm 安裝與初始化的入門教程

    這篇文章主要介紹了vue3.0 CLI - 1 - npm 安裝與初始化的入門教程,本文通過實(shí)例代碼相結(jié)合的形式,給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • Vue cli+mui 區(qū)域滾動的實(shí)例代碼

    Vue cli+mui 區(qū)域滾動的實(shí)例代碼

    下面小編就為大家分享一篇Vue cli+mui 區(qū)域滾動的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • vue攔截器實(shí)現(xiàn)統(tǒng)一token,并兼容IE9驗(yàn)證功能

    vue攔截器實(shí)現(xiàn)統(tǒng)一token,并兼容IE9驗(yàn)證功能

    這篇文章主要介紹了vue攔截器實(shí)現(xiàn)統(tǒng)一token,并兼容IE9驗(yàn)證功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2018-04-04
  • 利用vue.js插入dom節(jié)點(diǎn)的方法

    利用vue.js插入dom節(jié)點(diǎn)的方法

    這篇文章主要介紹了利用vue.js插入dom節(jié)點(diǎn)的相關(guān)資料,文中介紹的非常,對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03

最新評論