Skip to content

Commit 88cef3b

Browse files
committed
侧边栏折叠
1 parent 4a45c99 commit 88cef3b

File tree

5 files changed

+72
-28
lines changed

5 files changed

+72
-28
lines changed

src/components/common/Header.vue

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<template>
22
<div class="header">
3+
<div class="collapse-btn" @click="collapseChage">
4+
<i class="el-icon-menu"></i>
5+
</div>
36
<div class="logo">后台管理系统</div>
47
<div class="user-info">
58
<el-dropdown trigger="click" @command="handleCommand">
@@ -15,9 +18,11 @@
1518
</div>
1619
</template>
1720
<script>
21+
import bus from '../common/bus';
1822
export default {
1923
data() {
2024
return {
25+
collapse: false,
2126
name: 'linxin'
2227
}
2328
},
@@ -33,6 +38,10 @@
3338
localStorage.removeItem('ms_username')
3439
this.$router.push('/login');
3540
}
41+
},
42+
collapseChage(){
43+
this.collapse = !this.collapse;
44+
bus.$emit('collapse', this.collapse);
3645
}
3746
}
3847
}
@@ -47,10 +56,18 @@
4756
line-height: 70px;
4857
color: #fff;
4958
}
59+
.collapse-btn{
60+
float: left;
61+
padding: 0 21px;
62+
cursor: pointer;
63+
}
64+
.collapse-btn:hover{
65+
background: rgb(40,52,70);
66+
}
5067
.header .logo{
5168
float: left;
5269
width:250px;
53-
text-align: center;
70+
/* text-align: center; */
5471
}
5572
.user-info {
5673
float: right;

src/components/common/Home.vue

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
1-
<template>
2-
<div class="wrapper">
3-
<v-head></v-head>
4-
<v-sidebar></v-sidebar>
5-
<div class="content">
6-
<transition name="move" mode="out-in"><router-view></router-view></transition>
7-
</div>
8-
</div>
9-
</template>
10-
11-
<script>
12-
import vHead from './Header.vue';
13-
import vSidebar from './Sidebar.vue';
14-
export default {
15-
components:{
16-
vHead, vSidebar
17-
}
18-
}
19-
</script>
1+
<template>
2+
<div class="wrapper">
3+
<v-head></v-head>
4+
<v-sidebar></v-sidebar>
5+
<div class="content" :class="{'content-collapse':collapse}">
6+
<transition name="move" mode="out-in"><router-view></router-view></transition>
7+
</div>
8+
</div>
9+
</template>
10+
11+
<script>
12+
import vHead from './Header.vue';
13+
import vSidebar from './Sidebar.vue';
14+
import bus from '../common/bus';
15+
export default {
16+
data(){
17+
return {
18+
collapse: false
19+
}
20+
},
21+
components:{
22+
vHead, vSidebar
23+
},
24+
created(){
25+
bus.$on('collapse', msg => {
26+
this.collapse = msg;
27+
})
28+
}
29+
}
30+
</script>

src/components/common/Sidebar.vue

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<template>
22
<div class="sidebar">
3-
<el-menu :default-active="onRoutes" class="el-menu-vertical-demo" background-color="#324157"
3+
<el-menu class="sidebar-el-menu" :default-active="onRoutes" :collapse="collapse" background-color="#324157"
44
text-color="#bfcbd9" active-text-color="#20a0ff" unique-opened router>
55
<template v-for="item in items">
66
<template v-if="item.subs">
77
<el-submenu :index="item.index" :key="item.index">
88
<template slot="title">
9-
<i :class="item.icon"></i>{{ item.title }}
9+
<i :class="item.icon"></i><span slot="title">{{ item.title }}</span>
1010
</template>
1111
<el-menu-item v-for="(subItem,i) in item.subs" :key="i" :index="subItem.index">
1212
{{ subItem.title }}
@@ -15,7 +15,7 @@
1515
</template>
1616
<template v-else>
1717
<el-menu-item :index="item.index" :key="item.index">
18-
<i :class="item.icon"></i>{{ item.title }}
18+
<i :class="item.icon"></i><span slot="title">{{ item.title }}</span>
1919
</el-menu-item>
2020
</template>
2121
</template>
@@ -24,9 +24,11 @@
2424
</template>
2525

2626
<script>
27+
import bus from '../common/bus';
2728
export default {
2829
data() {
2930
return {
31+
collapse: false,
3032
items: [
3133
{
3234
icon: 'el-icon-setting',
@@ -93,6 +95,11 @@
9395
onRoutes(){
9496
return this.$route.path.replace('/','');
9597
}
98+
},
99+
created(){
100+
bus.$on('collapse', msg => {
101+
this.collapse = msg;
102+
})
96103
}
97104
}
98105
</script>
@@ -101,16 +108,14 @@
101108
.sidebar{
102109
display: block;
103110
position: absolute;
104-
width: 250px;
105111
left: 0;
106112
top: 70px;
107113
bottom:0;
108-
background: #2E363F;
114+
}
115+
.sidebar-el-menu:not(.el-menu--collapse){
116+
width: 250px;
109117
}
110118
.sidebar > ul {
111119
height:100%;
112120
}
113-
.sidebar i{
114-
margin-top: -4px;
115-
}
116121
</style>

src/components/common/bus.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import Vue from 'vue';
2+
3+
// 使用 Event Bus
4+
const bus = new Vue();
5+
6+
export default bus;

static/css/main.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ a{text-decoration: none}
1919
padding:40px;
2020
box-sizing: border-box;
2121
overflow-y: scroll;
22+
-webkit-transition: left .3s ease-in-out;
23+
transition: left .3s ease-in-out;
24+
}
25+
.content-collapse{
26+
left: 65px;
2227
}
2328
.container{
2429
padding: 30px;

0 commit comments

Comments
 (0)