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

vue2使用el-tag實現(xiàn)自定義菜單導航標簽

 更新時間:2023年12月12日 10:57:42   作者:請叫我歐皇i  
這篇文章主要為大家詳細介紹了vue2如何使用el-tag實現(xiàn)自定義菜單導航標簽,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

需求:使用el-tag寫個菜單導航欄,點擊路由的時候就添加

功能:

  • 設置鼠標橫向滾動并且不展示滾動條
  • 添加關閉其他、關閉左側(cè)、關閉右側(cè)、全部關閉標簽功能
  • 單個標簽刪除功能添加,固定標簽不可刪除
  • 右鍵點擊展開操作菜單欄
  • 設置個默認固定的標簽,比如首頁
  • 點擊標簽后el-menu對應路由激活

1.效果

1.1滾動條效果如下

1.2標簽操作如下

2.滾動條代碼講解和實現(xiàn)

滾動條我使用的是自定義指令實現(xiàn)的,給最外層的tag一個div包裹并且設置寬高和自定義指令

v-horizontal-scroll:自己寫的不是系統(tǒng)自帶的,名字要和directives下horizontal-scroll的對應不然監(jiān)聽不到

 event.preventDefault();阻止默認事件觸發(fā)

<div class="tabs-container" v-horizontal-scroll></div>
export default {
  directives: {
    "horizontal-scroll": {
      bind: function (el) {
        el.addEventListener("wheel", function (event) {
          event.preventDefault();
          el.scrollLeft += event.deltaY;
        });
      },
    },
  },
}
<style lang="scss" scoped>
.tabs-container {
  width: 100%;
  height: 100%;
  overflow-x: scroll;
  overflow-y: hidden;
  white-space: nowrap;
  display: flex;}
.tabs-container::-webkit-scrollbar {
  display: none;
}
</style>

3.主要代碼講解

完整代碼在最后,建議下載完整代碼后再看講解

3.1首先獲取到標簽頁需要展示的數(shù)據(jù)

第一步,監(jiān)聽路由,這個路由我寫了el-menu通過點擊路由進行監(jiān)聽,意思是如果是已有的路由那么就標簽頁跳轉(zhuǎn)到對應路由的標簽,如果沒有,那么就添加標簽。

  tagsData: [
        {
          title: "首頁",
          path: "/home",
        },
      ],

這個是固定的標簽,首頁不能被刪除

  watch: {
    // 監(jiān)聽當前路由
    $route: {
      immediate: true,
      handler(val, oldval) {
        console.log(val, "路由");
        const bool = this.tagsData.find((item) => val.path == item.path);
        if (!bool) {
          this.tagsData.push({
            title: val.meta.title,
            path: val.path,
          });
        }
        console.log(this.tagsData, "路由地址");
      },
    },
    tagsData: {
      immediate: true,
      handler(val, oldval) {
        return;
      },
    },
  },

3.2標簽樣式和標簽屬性講解

1.:closable="index > 0":標簽是否可以關閉,index>0也就是除了首頁外其他的標簽都有個x,表示可以關閉

2.:effect="item.title == $route.meta.title ? 'dark' : 'plain'"控制標簽點擊后的顏色改變,也就是主題改變

3.contextmenu.native.prevent監(jiān)聽右鍵菜單點擊事件并且阻止默認事件觸發(fā)

   <el-tag
      class="tag"
      size="medium"
      :closable="index > 0"
      v-for="(item, index) in tagsData"
      :key="item.path"
      @click="goPath(item.path)"
      @close="close(index)"
      :effect="item.title == $route.meta.title ? 'dark' : 'plain'"
      @contextmenu.native.prevent="rightClick($event, index)"
    >
      <i class="cir" v-show="item.title == $route.meta.title"></i
      >{{ item.title }}
    </el-tag>

樣式如下 也就是添加了個小圓點

  .tag {
    cursor: pointer;
    margin-right: 5px;
    height: 37px;
    line-height: 34px;
    font-size: 16px;
    .cir {
      width: 8px;
      height: 8px;
      margin-right: 4px;
      background-color: #fff;
      border-radius: 50%;
      display: inline-block;
    }
  }

3.3 el-tag事件代碼講解

點擊事件后,如果重復點擊會報錯,所以這邊我做了個判斷

    // 點擊標簽跳轉(zhuǎn)
    goPath(path) {
      // 解決重復點擊會報錯,數(shù)據(jù)冗余
      if (path !== this.$route.path) {
        this.$router.push(path);
      }
      this.closeMenus();
    },

點擊關閉標簽后對應的路由肯定也得跟著跳轉(zhuǎn)啊,跳轉(zhuǎn)代碼如下 

    close(i) {
      if (
        this.tagsData[i].path == this.$route.path &&
        i !== this.tagsData.length - 1
      ) {
        // 直接跳轉(zhuǎn)到最后一項了
        this.$router.push(this.tagsData[this.tagsData.length - 1].path);
      } else if (i === this.tagsData.length - 1) {
        this.$router.push(this.tagsData[this.tagsData.length - 2].path);
      }
      // 關閉當前項,本質(zhì)上就是刪除tags的對應項
      this.tagsData.splice(i, 1);
      this.closeMenus();
    },

3.4點擊關閉操作欄

點擊右鍵的時候打開操作欄了,但是之后關閉掉,要關閉只能把isShowTagsMenu=false就行

  mounted() {
    // 給文檔添加點擊事件
    document.addEventListener("click", this.closeMenus);
  },
  methods: {
    // 關閉選擇菜單
    closeMenus() {
      this.isShowTagsMenu = false;
    },
}

4.完整代碼

完整代碼地址如下:

vue2自定義導航欄: vue2自定義導航欄并設置樣式 (gitee.com)

到此這篇關于vue2使用el-tag實現(xiàn)自定義菜單導航標簽的文章就介紹到這了,更多相關vue2自定義菜單導航內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 深入理解vue.js雙向綁定的實現(xiàn)原理

    深入理解vue.js雙向綁定的實現(xiàn)原理

    vue.js是MVVM結(jié)構的,同類的還有AngularJs;至于MVC、MVP、MVVM的比較網(wǎng)上已經(jīng)有很多了,這樣不再重復。這篇文章將給大家深入的介紹vue.js雙向綁定的實現(xiàn)原理,有需要的朋友們可以參考借鑒,下面跟著小編一起來看看吧。
    2016-12-12
  • 深入分析element ScrollBar滾動組件源碼

    深入分析element ScrollBar滾動組件源碼

    這篇文章主要介紹了element ScrollBar滾動組件源碼深入分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Vue利用mockjs編寫假數(shù)據(jù)并應用的問題記錄

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

    這篇文章主要介紹了Vue利用mockjs編寫假數(shù)據(jù)并應用,本文通過實例代碼給大家詳細講解,對Vue?mockjs數(shù)據(jù)相關知識感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • vue_drf實現(xiàn)短信驗證碼

    vue_drf實現(xiàn)短信驗證碼

    我們在做網(wǎng)站開發(fā)時,登錄頁面很多情況下是可以用手機號接收短信驗證碼,本文主要介紹了vue_drf實現(xiàn)短信驗證碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Vue的transition-group與Virtual Dom Diff算法的使用

    Vue的transition-group與Virtual Dom Diff算法的使用

    這篇文章主要介紹了Vue的transition-group與Virtual Dom Diff算法的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • VueRouter?原理解讀之初始化流程

    VueRouter?原理解讀之初始化流程

    這篇文章主要為大家介紹了VueRouter原理解讀之初始化流程實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 在vue中使用防抖和節(jié)流,防止重復點擊或重復上拉加載實例

    在vue中使用防抖和節(jié)流,防止重復點擊或重復上拉加載實例

    今天小編就為大家分享一篇在vue中使用防抖和節(jié)流,防止重復點擊或重復上拉加載實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue中對象的賦值Object.assign({}, row)方式

    vue中對象的賦值Object.assign({}, row)方式

    這篇文章主要介紹了vue中對象的賦值Object.assign({}, row)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 基于element-ui封裝表單金額輸入框的方法示例

    基于element-ui封裝表單金額輸入框的方法示例

    這篇文章主要介紹了基于element-ui封裝表單金額輸入框的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Vue3中的動畫過渡實現(xiàn)技巧分享

    Vue3中的動畫過渡實現(xiàn)技巧分享

    在現(xiàn)代的前端開發(fā)中,用戶體驗的重要性不言而喻,為了讓應用程序更加生動和引人注目,動畫和過渡效果是必不可少的元素,本文將以 Vue3 為基礎,深入探討如何在應用程序中實現(xiàn)動畫過渡,以及一些技巧和最佳實踐,需要的朋友可以參考下
    2025-01-01

最新評論