Skip to content

Commit a78bf52

Browse files
committed
折叠导航菜单
1 parent a03ddb3 commit a78bf52

File tree

2 files changed

+94
-16
lines changed

2 files changed

+94
-16
lines changed

src/main.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import babelpolyfill from 'babel-polyfill'
22
import Vue from 'vue'
33
import App from './App'
44
import ElementUI from 'element-ui'
5-
//import 'element-ui/lib/theme-default/index.css'
6-
import './assets/theme/theme-green/index.css'
5+
import 'element-ui/lib/theme-default/index.css'
6+
//import './assets/theme/theme-green/index.css'
77
import VueRouter from 'vue-router'
88
import store from './vuex/store'
99
import Vuex from 'vuex'

src/pages/Home.vue

Lines changed: 92 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
<template>
22
<el-row class="container">
33
<el-col :span="24" class="header">
4-
<el-col :span="20" class="logo">
5-
VUEADMIN
4+
<el-col :span="10" class="logo" :class="collapsed?'logo-collapse-width':'logo-width'">
5+
{{collapsed?'':sysName}}
6+
</el-col>
7+
<el-col :span="10">
8+
<div class="tools" @click.prevent="collapse">
9+
<i class="fa fa-align-justify"></i>
10+
</div>
611
</el-col>
712
<el-col :span="4" class="userinfo">
813
<el-dropdown trigger="click">
@@ -16,17 +21,34 @@
1621
</el-col>
1722
</el-col>
1823
<el-col :span="24" class="main">
19-
<aside>
24+
<aside :class="collapsed?'menu-collapsed':'menu-expanded'">
25+
<!--导航菜单-->
2026
<el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen" @close="handleclose" @select="handleselect"
21-
unique-opened router>
27+
unique-opened router v-show="!collapsed">
2228
<template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
2329
<el-submenu :index="index+''" v-if="!item.leaf">
2430
<template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
2531
<el-menu-item v-for="child in item.children" :index="child.path" v-if="!child.hidden">{{child.name}}</el-menu-item>
2632
</el-submenu>
2733
<el-menu-item v-if="item.leaf&&item.children.length>0" :index="item.children[0].path"><i :class="item.iconCls"></i>{{item.children[0].name}}</el-menu-item>
2834
</template>
29-
</el-menu>
35+
</el-menu>
36+
<!--导航菜单-折叠后-->
37+
<ul class="el-menu el-menu-vertical-demo collapsed" v-show="collapsed" ref="menuCollapsed">
38+
<li v-for="(item,index) in $router.options.routes" v-if="!item.hidden" class="el-submenu item">
39+
<template v-if="!item.leaf">
40+
<div class="el-submenu__title" style="padding-left: 20px;" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)"><i :class="item.iconCls"></i></div>
41+
<ul class="el-menu submenu" :class="'submenu-hook-'+index" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)">
42+
<li v-for="child in item.children" v-if="!child.hidden" class="el-menu-item" style="padding-left: 40px;" :class="$route.path==child.path?'is-active':''" @click="$router.push(child.path)">{{child.name}}</li>
43+
</ul>
44+
</template>
45+
<template v-else>
46+
<li class="el-submenu">
47+
<div class="el-submenu__title el-menu-item" style="padding-left: 20px;height: 56px;line-height: 56px;padding: 0 20px;" :class="$route.path==item.children[0].path?'is-active':''" @click="$router.push(item.children[0].path)"><i :class="item.iconCls"></i></div>
48+
</li>
49+
</template>
50+
</li>
51+
</ul>
3052
</aside>
3153
<section class="content-container">
3254
<div class="grid-content bg-purple-light">
@@ -53,6 +75,8 @@
5375
export default {
5476
data() {
5577
return {
78+
sysName:'VUEADMIN',
79+
collapsed:false,
5680
sysUserName: '',
5781
sysUserAvatar: '',
5882
form: {
@@ -92,6 +116,13 @@
92116
});
93117
94118
119+
},
120+
//折叠导航栏
121+
collapse:function(){
122+
this.collapsed=!this.collapsed;
123+
},
124+
showMenu(i,status){
125+
this.$refs.menuCollapsed.getElementsByClassName('submenu-hook-'+i)[0].style.display=status?'block':'none';
95126
}
96127
},
97128
mounted() {
@@ -101,6 +132,7 @@
101132
this.sysUserName = user.name || '';
102133
this.sysUserAvatar = user.avatar || '';
103134
}
135+
104136
}
105137
}
106138
@@ -115,11 +147,12 @@
115147
.header {
116148
height: 60px;
117149
line-height: 60px;
118-
background: #18c79c;//#20a0ff
150+
background: #20a0ff;//#20a0ff
119151
color:#fff;
120152
.userinfo {
121153
text-align: right;
122154
padding-right: 35px;
155+
float: right;
123156
.userinfo-inner {
124157
cursor: pointer;
125158
color:#fff;
@@ -133,8 +166,14 @@
133166
}
134167
}
135168
.logo {
169+
//width:230px;
170+
height:60px;
136171
font-size: 22px;
137172
padding-left:20px;
173+
padding-right:20px;
174+
border-color: rgba(238,241,146,0.3);
175+
border-right-width: 1px;
176+
border-right-style: solid;
138177
img {
139178
width: 40px;
140179
float: left;
@@ -144,29 +183,68 @@
144183
color:#fff;
145184
}
146185
}
186+
.logo-width{
187+
width:230px;
188+
}
189+
.logo-collapse-width{
190+
width:60px
191+
}
192+
.tools{
193+
padding: 0px 23px;
194+
width:14px;
195+
height: 60px;
196+
line-height: 60px;
197+
cursor: pointer;
198+
}
147199
}
148200
.main {
201+
display: flex;
149202
// background: #324057;
150203
position: absolute;
151204
top: 60px;
152205
bottom: 0px;
153206
overflow: hidden;
154207
aside {
208+
flex:0 0 230px;
155209
width: 230px;
156-
position: absolute;
157-
top: 0px;
158-
bottom: 0px;
210+
// position: absolute;
211+
// top: 0px;
212+
// bottom: 0px;
159213
.el-menu{
160214
height: 100%;
161215
}
216+
.collapsed{
217+
width:60px;
218+
.item{
219+
position: relative;
220+
}
221+
.submenu{
222+
position:absolute;
223+
top:0px;
224+
left:60px;
225+
z-index:99999;
226+
height:auto;
227+
display:none;
228+
}
229+
230+
}
231+
}
232+
.menu-collapsed{
233+
flex:0 0 60px;
234+
width: 60px;
235+
}
236+
.menu-expanded{
237+
flex:0 0 230px;
238+
width: 230px;
162239
}
163240
.content-container {
164241
// background: #f1f2f7;
165-
position: absolute;
166-
right: 0px;
167-
top: 0px;
168-
bottom: 0px;
169-
left: 230px;
242+
flex:1;
243+
// position: absolute;
244+
// right: 0px;
245+
// top: 0px;
246+
// bottom: 0px;
247+
// left: 230px;
170248
overflow-y: scroll;
171249
padding: 20px;
172250
.breadcrumb-container {

0 commit comments

Comments
 (0)