亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

element?實(shí)現(xiàn)導(dǎo)航欄收起展開功能及思路

 更新時(shí)間:2023年01月16日 15:12:53   作者:水星記_  
這篇文章主要介紹了element?實(shí)現(xiàn)導(dǎo)航欄收起展開功能,實(shí)現(xiàn)思路先給 el-menu加上 :collapse="isCollapse" 屬性,這個(gè)屬性也是 element 上的一個(gè)參數(shù),意思為是否開啟折疊動(dòng)畫,在 data 中定義 isCollapse ,用 true 和 false 控制展開與收起,需要的朋友可以參考下

上篇文章介紹了vue使用ElementUI時(shí)導(dǎo)航欄默認(rèn)展開功能的實(shí)現(xiàn),今天介紹下element 導(dǎo)航欄收起展開功能的實(shí)現(xiàn)思路。

element 導(dǎo)航欄收起展開

實(shí)現(xiàn)思路

1. 首先給 el-menu 加上 :collapse="isCollapse" 屬性,這個(gè)屬性也是 element 上的一個(gè)參數(shù),意思為是否開啟折疊動(dòng)畫,在 data 中定義 isCollapse ,用 truefalse 控制展開與收起。

2. 在 html 中寫入以下代碼。

 <el-menu :collapse="isCollapse" class="el-menu-vertical"></el-menu>

3. 這里還需要把 el-aside 的寬度設(shè)置為跟 el-menu 一樣,以免出現(xiàn)執(zhí)行展開收起時(shí)寬度不一樣。

  <!-- width的寬度跟collapse一樣動(dòng)態(tài)控制 -->
  <el-aside width="collapse"></el-aside>

4. 展開和收起按鈕利用兩個(gè) icon 圖標(biāo),通過點(diǎn)擊事件來動(dòng)態(tài)控制顯示與隱藏。

   <el-header>
          <!-- 點(diǎn)擊展開收起導(dǎo)航和切換對(duì)應(yīng)圖標(biāo) -->
          <i class="el-icon-s-fold" @click="isC" v-show="block"></i>
          <i class="el-icon-s-unfold" @click="isC" v-show="toggle"></i>
   </el-header>

5. data 中定義的變量。

export default {
  name: "Main",
  data() {
    return {
      isCollapse: false, //導(dǎo)航欄默認(rèn)為展開
      toggle: false,//第二個(gè)圖標(biāo)默認(rèn)隱藏
      block: true,//默認(rèn)顯示第一個(gè)圖標(biāo)
    };
  },
};

6. methods 中的點(diǎn)擊事件。

  methods: {
    // 動(dòng)態(tài)控制展開與收起和切換對(duì)應(yīng)圖標(biāo)
    isC() {
      this.isCollapse = !this.isCollapse;
      this.toggle = !this.toggle;
      this.block = !this.block;
    },
  },

7. 用到的 css 代碼。

.el-menu-vertical:not(.el-menu--collapse) {
  width: 240px;
}

最后附上完整代碼

<template>
  <div>
    <el-container>
      <!-- width的寬度跟collapse一樣動(dòng)態(tài)控制 -->
      <el-aside width="collapse">
        <!-- :collapse="isCollapse"  class="el-menu-vertical" 動(dòng)態(tài)控制導(dǎo)航菜單的收起與展開  router:讓index作為 path 進(jìn)行路由跳轉(zhuǎn) -->
        <el-menu :default-active="$route.path" router :collapse="isCollapse" class="el-menu-vertical" background-color="#393e42"
          text-color="#fff" active-text-color="rgb(64, 158, 255)">
          <el-submenu index="1">
            <!-- 插槽 插入一級(jí)導(dǎo)航標(biāo)題 -->
            <template slot="title">
              <i class="el-icon-s-tools"></i>
              <span>工廠設(shè)置</span>
            </template>
            <!-- 二級(jí)導(dǎo)航標(biāo)題 -->
            <el-menu-item-group>
              <el-menu-item index="/A-Business/A-Business">
                <i class="el-icon-s-shop"></i>商戶信息
              </el-menu-item>
            </el-menu-item-group>
          </el-submenu>
        </el-menu>
      </el-aside>
      <el-container>
        <el-header>
          <div class="box_bgd" @click="isC">
            <!-- 點(diǎn)擊展開收起導(dǎo)航和切換對(duì)應(yīng)圖標(biāo) -->
            <i class="el-icon-s-fold" v-show="block"></i>
            <i class="el-icon-s-unfold" v-show="toggle"></i>
          </div>
        </el-header>
        <el-main>
          <router-view></router-view>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapse: false, //導(dǎo)航欄默認(rèn)為展開
      toggle: false, //第二個(gè)圖標(biāo)默認(rèn)隱藏
      block: true, //默認(rèn)顯示第一個(gè)圖標(biāo)
    };
  },
  methods: {
    // 動(dòng)態(tài)控制展開與收起和切換對(duì)應(yīng)圖標(biāo)
    isC() {
      this.isCollapse = !this.isCollapse;
      this.toggle = !this.toggle;
      this.block = !this.block;
    },
  },
};
</script>

<style scoped>
.el-header {
  background-color: #b3c0d1;
  color: #333;
  line-height: 60px;
  height: 100%;
  padding: 0 !important;
}

.el-aside {
  background-color: #393e42;
  color: #333;
  height: 100vh;
}
.el-menu {
  border-right-width: 0;
}
.el-main {
  color: #333;
}
.el-menu-vertical:not(.el-menu--collapse) {
  width: 240px;
}
.box_bgd {
  height: 60px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  width: 54px;
}
.box_bgd i {
  font-size: 20px;
}
.box_bgd:hover {
  background-color: rgb(203, 215, 230);
}
</style>

效果如下

在這里插入圖片描述

PS:Vue結(jié)合element-ui實(shí)現(xiàn)導(dǎo)航菜單展開收縮小功能

1. 先上個(gè)效果圖 

這里我把控制菜單收縮的放在中間了,是可以隨便調(diào)整的。 

2. 問題思路想法 

① 首先是布局,這就是個(gè)很經(jīng)典的后臺(tái)管理系統(tǒng)的容器頁面,這里分為上下結(jié)構(gòu),上面一般放些系統(tǒng)logo、 登錄的用戶信息,還有一些小功能等等。然后下面又分為左右結(jié)構(gòu),左邊就是我們的導(dǎo)航菜單,右邊那一塊兒是我們將來所有的業(yè)務(wù)頁面存放的地方

② 上下結(jié)構(gòu)布局好說,下面左右結(jié)構(gòu)我們采用display:flex布局,但是問題就是寬度該怎么去設(shè)置,我們要實(shí)現(xiàn)菜單的收縮功能,寬度都是動(dòng)態(tài)的變化的,右邊也要隨著左邊的變動(dòng)而改變,結(jié)論就是,我們給左邊設(shè)置寬度為 width: auto,然后右邊不設(shè)置寬度,直接讓右邊寬度填滿剩下的右側(cè),即給右側(cè)div設(shè)置flex: 1,這樣布局基本就可以了

③ 第三就是給el-menu 設(shè)置 class="el-menu-vertical" :collapse="isCollapse" 屬性,一個(gè)是class類名,我們一會(huì)兒需要用到(就是展開的時(shí)候的寬度) ,還一個(gè)是isCollapse,表示開啟折疊動(dòng)畫

3. 完整代碼實(shí)現(xiàn)

<doc>
  容器頁面
</doc>
<template>
  <div class="main">
    <div class="layout-top"></div>
    <div class="layout-bottom">
      <!-- 左側(cè) -->
      <div id="LayoutLeft" class="layout-left">
      <el-menu default-active="1" class="el-menu-vertical" :collapse="isCollapse">
        <el-submenu index="1">
          <template slot="title">
            <i class="el-icon-location"></i>
            <span slot="title">導(dǎo)航一</span>
          </template>
          <el-menu-item-group>
            <span slot="title">分組一</span>
            <el-menu-item index="1-1">選項(xiàng)1</el-menu-item>
            <el-menu-item index="1-2">選項(xiàng)2</el-menu-item>
          </el-menu-item-group>
          <el-menu-item-group title="分組2">
            <el-menu-item index="1-3">選項(xiàng)3</el-menu-item>
          </el-menu-item-group>
          <el-submenu index="1-4">
            <span slot="title">選項(xiàng)4</span>
            <el-menu-item index="1-4-1">選項(xiàng)1</el-menu-item>
          </el-submenu>
        </el-submenu>
        <el-menu-item index="2">
          <i class="el-icon-menu"></i>
          <span slot="title">導(dǎo)航二</span>
        </el-menu-item>
      </el-menu>
        <!-- 控制菜單的收縮 -->
        <div @click="shrinkMenu" class="shrink">
          <i :class="isCollapse ? 'el-icon-s-unfold': 'el-icon-s-fold'"></i>
        </div>
      </div>
      <!-- 右側(cè) -->
      <div id="LayoutRight" class="layout-right">
        <div class="layout-content">
          <router-view></router-view>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  computed: {
    isCollapse: {
      get() {
        return this.$store.state.common.isCollapse
      },
      set(val) {
        this.$store.commit('common/updateisCollapse', val)
      }
    }
  },
  methods: {
    shrinkMenu() {
      this.isCollapse = !this.isCollapse;
    }
  }
}
</script>
<style>
.main {
  width: 100vw;
  height: 100vh;
}
/* --- 上面部分 --- */
.layout-top {
  width: 100%;
  height: 60px;
  background: #b3c0d1;
}
 
/* ------ 下面部分 ------ */
.layout-bottom {
  width: 100%;
  height: calc(100% - 60px);
  /* flex布局 */
  display: flex;
}
.layout-left {
  /* 左側(cè)不設(shè)置寬度 */
  width: auto;
  height: 100%;
  background: #d3dce6;
  position: relative;
}
.layout-right {
  height: 100%;
  /* flex關(guān)鍵代碼,讓右側(cè)占滿剩余寬度 */
  flex: 1;
  background: #e9eef3;
  padding: 25px;
  box-sizing: border-box;
}
/* 將來所有的業(yè)務(wù)頁面容器 */
.layout-content {
  width: 100%;
  height: 100%;
  background: #fff;
}
 
/* el-menu相關(guān)樣式 */
.el-menu {
  height: 100%;
  border-right-width: 0;
}
/* 必須設(shè)置 */
.el-menu-vertical:not(.el-menu--collapse) {
  width: 200px;
}
 
/* 控制菜單收縮 */
.shrink {
  position: absolute;
  top: 50%;
  right: -25px;
  transform: translateY(-50%);
  width: 25px;
  height: 30px;
  border: 1px solid #b3c0d1;
  background: #b3c0d1;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 3px;
  cursor: pointer;
  z-index: 9999;
}
</style>

注意:這里我把 isCollapse 存在了Vuex中,然后就是比較簡單的一些邏輯,大家稍微看下應(yīng)該都能明白。

唯一的核心代碼我覺得就是下面的左右兩側(cè)寬度設(shè)置的問題,左側(cè)設(shè)置 width: auto,右側(cè)不設(shè)置寬度,設(shè)置 flex: 1,這是核心的代碼。另外還有個(gè)核心的是設(shè)置 el-menu 展開的寬度即:

.el-menu-vertical:not(.el-menu--collapse) {
  width: 200px;
}

這個(gè)也是核心,要不然的話,展開收縮的時(shí)候會(huì)有問題。

到此這篇關(guān)于element 實(shí)現(xiàn)導(dǎo)航欄收起展開功能及思路的文章就介紹到這了,更多相關(guān)element 導(dǎo)航欄收起展開內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue中$nexttick,$set,$forceupdate的區(qū)別

    vue中$nexttick,$set,$forceupdate的區(qū)別

    本文主要介紹了vue中$nexttick,$set,$forceupdate的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 淺談vue,angular,react數(shù)據(jù)雙向綁定原理分析

    淺談vue,angular,react數(shù)據(jù)雙向綁定原理分析

    本篇文章主要介紹了淺談vue,angular,react數(shù)據(jù)雙向綁定原理分析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • 詳解Vue3中Teleport的使用

    詳解Vue3中Teleport的使用

    門戶(Portal)的概念是Vue3的新功能之一,也就是將模板 HTML 移至 DOM 的不同部分的方法。Portal 是 React 中的常見功能,Vue2 的 portal-vue &nbsp;庫也提供了相似的功能。在 Vue3 中用 Teleport 對(duì)這個(gè)概念提供了原生支持。本文將介紹Teleport的相關(guān)用法
    2021-05-05
  • Vue3?實(shí)現(xiàn)一個(gè)自定義toast?小彈窗功能

    Vue3?實(shí)現(xiàn)一個(gè)自定義toast?小彈窗功能

    這篇文章主要介紹了Vue3?實(shí)現(xiàn)一個(gè)自定義toast?小彈窗,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • vue中插槽(slot)幾種類型的使用方法

    vue中插槽(slot)幾種類型的使用方法

    本文主要介紹了vue中插槽(slot)幾種類型的使用方法,主要分三種,默認(rèn)插槽,具名插槽,作用域插槽,下面就來一起介紹一下,感興趣的可以了解一下
    2024-03-03
  • Vue3中vue-router的使用方法詳解

    Vue3中vue-router的使用方法詳解

    Vue?Router?是?Vue?的官方路由,它與?Vue.js?核心深度集成,讓用?Vue.js?構(gòu)建單頁應(yīng)用變得輕而易舉,本文將通過簡單的示例為大家介紹一下vue-router的使用,需要的可以參考一下
    2023-06-06
  • Vue+ElementUI?實(shí)現(xiàn)分頁功能-mysql數(shù)據(jù)

    Vue+ElementUI?實(shí)現(xiàn)分頁功能-mysql數(shù)據(jù)

    這篇文章主要介紹了Vue+ElementUI?實(shí)現(xiàn)分頁查詢-mysql數(shù)據(jù),當(dāng)數(shù)據(jù)庫中數(shù)據(jù)比較多時(shí),就每次只查詢一部分來緩解服務(wù)器和頁面壓力。這里使用elementui的?Pagination?分頁?組件,配合mysql的limit語句,實(shí)現(xiàn)分頁查詢mysql數(shù)據(jù),下面來看看具體實(shí)現(xiàn)過程,希望對(duì)大家學(xué)習(xí)有所幫助
    2021-12-12
  • vue自定義指令合集(超實(shí)用!)

    vue自定義指令合集(超實(shí)用!)

    Vue自定義指令是Vue中一種非常有用的擴(kuò)展能力,它允許你在標(biāo)準(zhǔn)的模板語法中使用自定義行為,而不需要編寫新的組件或者混入,這篇文章主要給大家介紹了關(guān)于vue自定義指令的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • vue 解決遍歷對(duì)象顯示的順序不對(duì)問題

    vue 解決遍歷對(duì)象顯示的順序不對(duì)問題

    今天小編就為大家分享一篇vue 解決遍歷對(duì)象顯示的順序不對(duì)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue實(shí)現(xiàn)主題切換的多種思路分享

    vue實(shí)現(xiàn)主題切換的多種思路分享

    最近一段時(shí)間,一直在做主題方面的工作。我們的主題,并不是簡單切換一下顏色,或者排版變化這些,而是變化比較大的主題。比如說:主題1和主題2看起來完全不一樣,功能甚至都不一樣。這樣,通過切換css就無法做到了,因此我思考良久,使用了如下2種方法
    2021-06-06

最新評(píng)論