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

vue實(shí)現(xiàn)頂部左右滑動(dòng)導(dǎo)航

 更新時(shí)間:2021年06月29日 10:39:10   作者:Geraint_z  
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)頂部左右滑動(dòng)導(dǎo)航,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

日常開發(fā)中經(jīng)常用到導(dǎo)航這些東西,寫篇文章記錄下。該導(dǎo)航實(shí)現(xiàn)為點(diǎn)擊末尾/起首位置,導(dǎo)航自動(dòng)滑動(dòng)出下一項(xiàng)的效果。

思路:判斷當(dāng)前點(diǎn)擊項(xiàng),相對(duì)與屏幕的位置,若點(diǎn)擊的位置,滿足可移動(dòng)的限制,進(jìn)行自動(dòng)滑動(dòng)處理。

實(shí)現(xiàn)如下:

vue

<template>
  <div class="debug-index-page">
    <div class="tab-layout" id="scroller">
      <ul v-for="(tab, idx) in tabList" :key="idx">
        <li
          :id="`tab-${tab.id}`"
          class="tab-item"
          @click="onClickTab(tab)"
          :style="`background:${tab.select ? 'red' : 'none'}`"
        >
          {{ tab.text }}
        </li>
      </ul>
    </div>
  </div>
</template>

JS

export default {

    data() {
        return {
            tabList: [],
        }
    },

    created() {
        let list = [
            "我的貴族",
            "貴族1",
            "我的貴族2",
            "貴族3",
            "貴族4",
            "貴族5",
            "我的貴族6",
            "我的貴族7",
        ];

        list.forEach((text, idx) => {
            this.tabList.push({
                text,
                id: idx, // tab標(biāo)識(shí)
                select: idx == 0, // 是否被選擇
                index: idx // 處于顯示的位置
            });
        });
    },

    computed: {
        curTab() {
            return this.tabList.find(v => v.select);
        }
    },

    methods: {

        onClickTab(tabInfo) {
            let curTab = this.curTab;
            if (curTab.id == tabInfo.id) return;
            let { index, id } = tabInfo;
            // 滑動(dòng)控件
            let scroller = document.getElementById("scroller");
            let speed = scroller.scrollWidth / this.tabList.length;
            let tab = document.getElementById(`tab-${id}`);
            let bWidth = document.body.clientWidth;
            // 點(diǎn)擊右邊
            if (curTab.index < index && tab.clientWidth * index >= bWidth - speed) {
            // 滑動(dòng)的距離
                scroller.scrollLeft = (index + 2) * speed - bWidth;
            } else if (curTab.index > index && (tab.clientWidth * index - (scroller.scrollLeft + bWidth) < speed)) {
            // 滑動(dòng)的距離
                scroller.scrollLeft = (index - 1) * speed;
            }

            curTab.select = false;
            this.tabList[index].select = true;
        }
    }
}

less

.debug-index-page {
    width: 100%;
    overflow:hidden;


  .tab-layout {
    width: 100%;
    overflow-x: scroll;
    display: flex;

    .tab-item {
      width: 1rem;
      text-align: center;
    }
  }
}

以上就是導(dǎo)航的顯示了。

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

相關(guān)文章

  • Vue通過moment插件實(shí)現(xiàn)獲取當(dāng)前月的第一天和最后一天

    Vue通過moment插件實(shí)現(xiàn)獲取當(dāng)前月的第一天和最后一天

    這篇文章主要介紹了Vue 結(jié)合插件moment 實(shí)現(xiàn)獲取當(dāng)前月的第一天和最后一天,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • vue 指令之氣泡提示效果的實(shí)現(xiàn)代碼

    vue 指令之氣泡提示效果的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue 指令之氣泡提示效果的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10
  • 使vue實(shí)現(xiàn)jQuery調(diào)用的兩種方法

    使vue實(shí)現(xiàn)jQuery調(diào)用的兩種方法

    這篇文章主要介紹了使vue實(shí)現(xiàn)jQuery調(diào)用的兩種方法 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • vue動(dòng)態(tài)循環(huán)出的多個(gè)select出現(xiàn)過的變?yōu)閐isabled(實(shí)例代碼)

    vue動(dòng)態(tài)循環(huán)出的多個(gè)select出現(xiàn)過的變?yōu)閐isabled(實(shí)例代碼)

    本文通過實(shí)例代碼給大家分享了vue動(dòng)態(tài)循環(huán)出的多個(gè)select出現(xiàn)過的變?yōu)閐isabled效果,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-11-11
  • Vue3中樣式滲透:deep()無效的原因分析

    Vue3中樣式滲透:deep()無效的原因分析

    今天學(xué)習(xí) /deep/ 樣式穿透,因?yàn)関ue3中已經(jīng)使用:deep()取代了/deep/ ,所以直接用:deep()練習(xí),這篇文章主要介紹了Vue3中樣式滲透:deep()為什么無效,需要的朋友可以參考下
    2022-11-11
  • Vue組件化開發(fā)之通用型彈出框的實(shí)現(xiàn)

    Vue組件化開發(fā)之通用型彈出框的實(shí)現(xiàn)

    這篇文章主要介紹了Vue組件化開發(fā)之通用型彈出框的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • vuex項(xiàng)目中登錄狀態(tài)管理的實(shí)踐過程

    vuex項(xiàng)目中登錄狀態(tài)管理的實(shí)踐過程

    由于狀態(tài)零散地分布在許多組件和組件之間的交互中,大型應(yīng)用復(fù)雜度也經(jīng)常逐漸增長(zhǎng),為了解決這個(gè)問題,Vue 提供 vuex,這篇文章主要給大家介紹了關(guān)于vuex項(xiàng)目中登錄狀態(tài)管理的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Vue3新狀態(tài)管理工具實(shí)例詳解

    Vue3新狀態(tài)管理工具實(shí)例詳解

    Vue3公布曾經(jīng)有一段時(shí)間了,它采納了新的響應(yīng)式零碎,而且構(gòu)建了一套全新的 Composition API,下面這篇文章主要給大家介紹了關(guān)于Vue3新狀態(tài)管理工具的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • vue文本識(shí)別"\n"換行問題的解決方式

    vue文本識(shí)別"\n"換行問題的解決方式

    在頁面中經(jīng)常會(huì)遇到自定義文本,如果文本過長(zhǎng)就需要換行,在HTML中可以通過標(biāo)簽換行,也可以通過\n轉(zhuǎn)椅字符換行,下面這篇文章主要給大家介紹了關(guān)于vue文本識(shí)別“\n”換行問題的解決方式,需要的朋友可以參考下
    2022-11-11
  • vue組件傳遞對(duì)象中實(shí)現(xiàn)單向綁定的示例

    vue組件傳遞對(duì)象中實(shí)現(xiàn)單向綁定的示例

    下面小編就為大家分享一篇vue組件傳遞對(duì)象中實(shí)現(xiàn)單向綁定的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02

最新評(píng)論

汤阴县| 安新县| 龙海市| 张家川| 萝北县| 大渡口区| 济宁市| 龙陵县| 东乌珠穆沁旗| 伊金霍洛旗| 苍山县| 耒阳市| 孟州市| 闻喜县| 台安县| 湟中县| 新津县| 新宁县| 玉山县| 鄂托克旗| 恭城| 绵竹市| 三门县| 拜泉县| 澳门| 扎鲁特旗| 呼伦贝尔市| 新田县| 平泉县| 大关县| 浮梁县| 武强县| 凤山县| 神池县| 林州市| 巧家县| 平武县| 东港市| 沅江市| 志丹县| 呼伦贝尔市|