vue2左側(cè)菜單欄收縮展開功能實(shí)現(xiàn)
vue2左側(cè)菜單欄收縮展開目前是非常常見的,我們在日常開發(fā)過程中經(jīng)常會碰到。這一小節(jié)我們就詳細(xì)了解一下這個(gè)功能,完善我們的項(xiàng)目開發(fā)。
首先,修改Main.vue頁面中的一些屬性,有些屬性需要動態(tài)綁定。接下來我們來一步一步實(shí)現(xiàn)。
1. Main.vue頁面代碼
a. 修改側(cè)邊欄屬性
我們給我們導(dǎo)入的Aside組件動態(tài)綁定一個(gè)isCollapse。然后再下面的方法中定義
logoTextShow是我們動態(tài)綁定的系統(tǒng)名稱:當(dāng)我們點(diǎn)擊收縮菜單時(shí),系統(tǒng)名稱會隱藏,展示我們的系統(tǒng)圖標(biāo)。
下面是效果展示:

<!--其它代碼--> <!-- 側(cè)邊欄 --> <el-aside :width="sideWidth + 'px'" style="background-color: rgb(238, 241, 246);height: 100%"> <Aside :isCollapse="isCollapse" :logoTextShow="logoTextShow"/> </el-aside> <!--其它代碼-->
b. 修改頭部導(dǎo)航欄
頭部導(dǎo)航欄是我們點(diǎn)擊收縮展開按鈕的地方,我們在這里動態(tài)綁定點(diǎn)擊函數(shù)。collapse函數(shù)就是我們動態(tài)綁定的函數(shù)。
<!--其它代碼--> <!-- 頭部導(dǎo)航欄 --> <el-header style="border-bottom: 1px solid #ccc;"> <Header :collapseBtnClass="collapseBtnClass" :collapse="collapse"/> </el-header> <!--其它代碼-->
c. 定義我們的變量
我們在return中定義我們的collapseBtnClass圖標(biāo)變量;
定義Aside.vue中的sidewidth左側(cè)菜單欄寬度
還有默認(rèn)展示我們的系統(tǒng)名稱而不是展示logo圖片
<!--其它代碼-->
data () {
return {
collapseBtnClass: 'el-icon-s-fold',
isCollapse: false,
sideWidth: 220,
logoTextShow: true
}
},
<!--其它代碼-->d. collapse函數(shù)
這里我們函數(shù)的邏輯是:
當(dāng)我們點(diǎn)擊收縮菜單圖標(biāo)時(shí),isCollapse變量為flase;
當(dāng)我們的isCollapse變量為false時(shí),this.sidewidth寬度為64,圖標(biāo)設(shè)置為收縮圖標(biāo)
然后我們的系統(tǒng)名稱隱藏;
相反:我們的菜單寬度為220;設(shè)置展開圖標(biāo),系統(tǒng)名稱菜單展示
<!--其它代碼-->
methods: {
collapse () {
this.isCollapse = !this.isCollapse
if (this.isCollapse) {
this.sideWidth = 64
this.collapseBtnClass = 'el-icon-s-unfold'
this.logoTextShow = false
} else {
this.sideWidth = 220
this.collapseBtnClass = 'el-icon-s-fold'
this.logoTextShow = true
}
}
}
<!--其它代碼-->2. Header.vue頁面代碼
首先在我們面包屑上面加一個(gè)span標(biāo)簽:
綁定我們的class為collapseBtnClass:
設(shè)置一個(gè)點(diǎn)擊事件:collapse
<!--其它代碼--> <span :class="collapseBtnClass" style="cursor: pointer; font-size: 18px" @click="collapse"></span> <!--其它代碼-->
這里牽扯到一個(gè)父子傳值和子子傳值。父子傳值我們在子組件里面接收就要用props來接收
<!--其它代碼-->
props: {
collapseBtnClass: String,
collapse: Function
}
<!--其它代碼-->3. Aside.vue頁面代碼
我們在標(biāo)簽<el-menu>綁定我們的屬性:
<el-menu
:default-openeds="[]" style="min-height: 100%; overflow-x: hidden"
background-color="#1f2d3d"
text-color="#fff"
default-active="/home"
active-text-color="rgb(75 175 255)"
:collapse-transition="false"
:collapse="isCollapse"
router>系統(tǒng)名稱給一個(gè)v-show事件
<div style="height: 60px; line-height: 60px; text-align: center"> <img src="../assets/logo.png" alt="" style="width: 20px; position: relative; top: 2px;"> <b style="color: white" v-show="logoTextShow">倉庫管理系統(tǒng)</b> </div>
然后我們在下面接收父組件傳遞的值:
<!--其它代碼-->
props: {
isCollapse: Boolean,
logoTextShow: Boolean
}
<!--其它代碼-->現(xiàn)在會有一個(gè)問題,我們點(diǎn)擊收縮菜單欄時(shí)菜單文字會有遺留,我們給一個(gè)樣式來隱藏文字
<style>
.el-menu-item.is-active {
background-color: rgb(38, 52, 69) !important;
}
.el-menu-item:hover {
background-color: rgb(38, 52, 69) !important;
}
.el-submenu__title:hover {
background-color: rgb(38, 52, 69) !important;
}
/*解決收縮菜單文字不消失問題*/
.el-menu--collapse span {
visibility: hidden;
}
</style>以上就是我們的菜單欄收縮展開全部教程。
到此這篇關(guān)于vue2左側(cè)菜單欄收縮展開功能的文章就介紹到這了,更多相關(guān)vue2菜單欄收縮展開內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue學(xué)習(xí)筆記進(jìn)階篇之單元素過度
這篇文章主要介紹了Vue學(xué)習(xí)筆記進(jìn)階篇之單元素過度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
vue監(jiān)聽頁面中的某個(gè)div的滾動事件并判斷滾動的位置
本文主要介紹了vue監(jiān)聽頁面中的某個(gè)div的滾動事件并判斷滾動的位置,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
vue中this.$refs有值,但無法獲取ref的值問題及解決
這篇文章主要介紹了vue中this.$refs有值,但無法獲取ref的值問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
vue自動路由-單頁面項(xiàng)目(非build時(shí)構(gòu)建)
這篇文章主要介紹了vue自動路由-單頁面項(xiàng)目(非build時(shí)構(gòu)建),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
快速解決Error: error:0308010C:digital envelope ro
因?yàn)?nbsp;node.js V17版本中最近發(fā)布的OpenSSL3.0, 而OpenSSL3.0對允許算法和密鑰大小增加了嚴(yán)格的限制,下面通過本文給大家分享快速解決Error: error:0308010C:digital envelope routines::unsupported的三種解決方案,感興趣的朋友一起看看吧2024-02-02

