Skip to content

Commit dd9ef51

Browse files
committed
refine sidebar
1 parent ae44d0b commit dd9ef51

File tree

7 files changed

+194
-121
lines changed

7 files changed

+194
-121
lines changed

src/styles/element-ui.scss

Lines changed: 72 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,82 @@
11
//覆盖一些element-ui样式
2-
.block-checkbox {
3-
display: block;
4-
}
2+
.block-checkbox {
3+
display: block;
4+
}
55

6-
.operation-container {
7-
.cell {
8-
padding: 10px !important;
9-
}
10-
.el-button {
11-
&:nth-child(3) {
12-
margin-top: 10px;
13-
margin-left: 0px;
14-
}
15-
&:nth-child(4) {
16-
margin-top: 10px;
17-
}
18-
}
19-
}
6+
.operation-container {
7+
.cell {
8+
padding: 10px !important;
9+
}
10+
.el-button {
11+
&:nth-child(3) {
12+
margin-top: 10px;
13+
margin-left: 0px;
14+
}
15+
&:nth-child(4) {
16+
margin-top: 10px;
17+
}
18+
}
19+
}
2020

21-
.el-upload {
22-
input[type="file"] {
23-
display: none !important;
24-
}
25-
}
21+
.el-upload {
22+
input[type="file"] {
23+
display: none !important;
24+
}
25+
}
2626

27-
.el-upload__input {
28-
display: none;
29-
}
27+
.el-upload__input {
28+
display: none;
29+
}
3030

31-
.cell {
32-
.el-tag {
33-
margin-right: 8px;
34-
}
35-
}
31+
.cell {
32+
.el-tag {
33+
margin-right: 8px;
34+
}
35+
}
3636

37-
.small-padding {
38-
.cell {
39-
padding-left: 8px;
40-
padding-right: 8px;
41-
}
42-
}
37+
.small-padding {
38+
.cell {
39+
padding-left: 8px;
40+
padding-right: 8px;
41+
}
42+
}
4343

44-
.status-col {
45-
.cell {
46-
padding: 0 10px;
47-
text-align: center;
48-
.el-tag {
49-
margin-right: 0px;
50-
}
51-
}
52-
}
44+
.status-col {
45+
.cell {
46+
padding: 0 10px;
47+
text-align: center;
48+
.el-tag {
49+
margin-right: 0px;
50+
}
51+
}
52+
}
5353

54-
//暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461
55-
.el-dialog {
56-
transform: none;
57-
left: 0;
58-
position: relative;
59-
margin: 0 auto;
60-
}
54+
//暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461
55+
.el-dialog {
56+
transform: none;
57+
left: 0;
58+
position: relative;
59+
margin: 0 auto;
60+
}
6161

62+
//文章页textarea修改样式
63+
.article-textarea {
64+
textarea {
65+
padding-right: 40px;
66+
resize: none;
67+
border: none;
68+
border-radius: 0px;
69+
border-bottom: 1px solid #bfcbd9;
70+
}
71+
}
6272

63-
//文章页textarea修改样式
64-
.article-textarea {
65-
textarea {
66-
padding-right: 40px;
67-
resize: none;
68-
border: none;
69-
border-radius: 0px;
70-
border-bottom: 1px solid #bfcbd9;
71-
}
72-
}
73-
74-
//element ui upload
75-
.upload-container {
76-
.el-upload {
77-
width: 100%;
78-
.el-upload-dragger {
79-
width: 100%;
80-
height: 200px;
81-
}
82-
}
83-
}
73+
//element ui upload
74+
.upload-container {
75+
.el-upload {
76+
width: 100%;
77+
.el-upload-dragger {
78+
width: 100%;
79+
height: 200px;
80+
}
81+
}
82+
}

src/styles/index.scss

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
@import './mixin.scss';
12
@import './btn.scss';
23
@import './element-ui.scss';
3-
@import './mixin.scss';
4+
@import './sidebar.scss';
5+
46
body {
57
-moz-osx-font-smoothing: grayscale;
68
-webkit-font-smoothing: antialiased;

src/styles/sidebar.scss

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
// 侧边栏
2+
.sidebar-container>.el-menu {
3+
width: 100%!important;
4+
}
5+
6+
.sidebar-container .svg-icon {
7+
margin-right: 16px;
8+
}
9+
10+
.hideSidebar .svg-icon {
11+
margin-right: 0;
12+
}
13+
14+
.hideSidebar .submenu-title-noDropdown span,
15+
.hideSidebar .el-submenu>.el-submenu__title span {
16+
height: 0;
17+
width: 0;
18+
overflow: hidden;
19+
visibility: hidden;
20+
display: inline-block;
21+
}
22+
23+
.hideSidebar .nest-menu .el-submenu__title {
24+
text-align: initial!important;
25+
span {
26+
height: auto;
27+
width: auto;
28+
visibility: visible;
29+
}
30+
.el-submenu__icon-arrow {
31+
display: block!important;
32+
}
33+
}
34+
35+
.hideSidebar .menu-wrapper>.el-menu-item,
36+
.hideSidebar .submenu-title-noDropdown,
37+
.hideSidebar .menu-wrapper>.el-submenu .el-submenu__title {
38+
text-align: center;
39+
}
40+
41+
.hideSidebar .el-menu-item .el-submenu__icon-arrow,
42+
.hideSidebar .el-submenu .el-submenu__title .el-submenu__icon-arrow {
43+
display: none;
44+
}
45+
46+
.hideSidebar .submenu-title-noDropdown {
47+
position: relative;
48+
span {
49+
transition: opacity .3s cubic-bezier(.55, 0, .1, 1);
50+
opacity: 0;
51+
}
52+
&:hover {
53+
span {
54+
display: block;
55+
border-radius: 3px;
56+
z-index: 1002;
57+
width: 140px;
58+
height: 56px;
59+
visibility: visible;
60+
position: absolute;
61+
right: -145px;
62+
top: 0px;
63+
background-color: #1f2d3d;
64+
opacity: 1;
65+
}
66+
}
67+
}
68+
69+
.el-submenu .el-menu-item {
70+
min-width: 180px!important;
71+
}
72+

src/views/layout/Layout.vue

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
<template>
22
<div class="app-wrapper" :class="{hideSidebar:!sidebar.opened}">
3-
<div class="sidebar-wrapper">
4-
<sidebar class="sidebar-container"></sidebar>
5-
</div>
3+
<sidebar class="sidebar-container"></sidebar>
64
<div class="main-container">
75
<navbar></navbar>
86
<app-main></app-main>
@@ -36,40 +34,36 @@
3634
height: 100%;
3735
width: 100%;
3836
&.hideSidebar {
39-
.sidebar-wrapper {
40-
transform: translate(-140px, 0);
41-
.sidebar-container {
42-
transform: translate(132px, 0);
43-
}
44-
&:hover {
45-
transform: translate(0, 0);
46-
.sidebar-container {
47-
transform: translate(0, 0);
48-
}
49-
}
37+
.sidebar-container{
38+
width:56px;
5039
}
5140
.main-container {
52-
margin-left: 40px;
41+
margin-left: 56px;
5342
}
43+
// .sidebar-wrapper {
44+
// transform: translate(-140px, 0);
45+
// .sidebar-container {
46+
// transform: translate(132px, 0);
47+
// }
48+
// &:hover {
49+
// transform: translate(0, 0);
50+
// .sidebar-container {
51+
// transform: translate(0, 0);
52+
// }
53+
// }
54+
// }
55+
5456
}
55-
.sidebar-wrapper {
57+
.sidebar-container {
58+
transition: all .28s ease-out;
5659
width: 180px;
60+
height: 1000px;
5761
position: fixed;
5862
top: 0;
5963
bottom: 0;
6064
left: 0;
6165
z-index: 1001;
62-
overflow: hidden;
63-
transition: all .28s ease-out;
64-
}
65-
.sidebar-container {
66-
transition: all .28s ease-out;
67-
position: absolute;
68-
top: 0;
69-
bottom: 0;
70-
left: 0;
71-
right: -17px;
72-
overflow-y: scroll;
66+
background: red;
7367
}
7468
.main-container {
7569
min-height: 100%;

src/views/layout/Levelbar.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<el-breadcrumb class="app-levelbar" separator="/">
3-
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item">
3+
<el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
44
<router-link v-if='item.redirect==="noredirect"||index==levelList.length-1' to="" class="no-redirect">{{item.name}}</router-link>
55
<router-link v-else :to="item.redirect||item.path">{{item.name}}</router-link>
66
</el-breadcrumb-item>

src/views/layout/Sidebar.vue

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
<template>
2-
<el-menu mode="vertical" theme="dark" :default-active="$route.path">
3-
<sidebar-item :routes='permission_routers'></sidebar-item>
2+
<div>
3+
<el-menu mode="vertical" theme="dark" :default-active="$route.path" :collapse="isCollapse">
4+
<sidebar-item :routes='permission_routers'></sidebar-item>
45
</el-menu>
6+
</div>
57
</template>
68

79
<script>
@@ -11,8 +13,12 @@
1113
components: { SidebarItem },
1214
computed: {
1315
...mapGetters([
14-
'permission_routers'
15-
])
16+
'permission_routers',
17+
'sidebar'
18+
]),
19+
isCollapse() {
20+
return !this.sidebar.opened
21+
}
1622
}
1723
}
1824
</script>

src/views/layout/SidebarItem.vue

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,31 @@
11
<template>
2-
<div>
2+
<div class='menu-wrapper'>
33
<template v-for="item in routes">
4+
45
<router-link v-if="!item.hidden&&item.noDropdown&&item.children.length>0" :to="item.path+'/'+item.children[0].path">
5-
<el-menu-item :index="item.path+'/'+item.children[0].path">
6-
<icon-svg v-if='item.icon' :icon-class="item.icon"></icon-svg>{{item.children[0].name}}
6+
<el-menu-item :index="item.path+'/'+item.children[0].path" class='submenu-title-noDropdown'>
7+
<icon-svg v-if='item.icon' :icon-class="item.icon"></icon-svg><span slot="title">{{item.children[0].name}}</span>
78
</el-menu-item>
89
</router-link>
10+
911
<el-submenu :index="item.name" v-if="!item.noDropdown&&!item.hidden">
1012
<template slot="title">
11-
<icon-svg v-if='item.icon' :icon-class="item.icon"></icon-svg>{{item.name}}
13+
<icon-svg v-if='item.icon' :icon-class="item.icon"></icon-svg><span slot="title">{{item.name}}</span>
1214
</template>
1315
<template v-for="child in item.children" v-if='!child.hidden'>
14-
<sidebar-item class='menu-indent' v-if='child.children&&child.children.length>0' :routes='[child]'> </sidebar-item>
15-
<router-link v-else class="menu-indent" :to="item.path+'/'+child.path">
16+
17+
<sidebar-item class='nest-menu' v-if='child.children&&child.children.length>0' :routes='[child]'> </sidebar-item>
18+
19+
<router-link v-else :to="item.path+'/'+child.path">
1620
<el-menu-item :index="item.path+'/'+child.path">
17-
{{child.name}}
21+
<span slot="title">{{child.name}}</span>
1822
</el-menu-item>
1923
</router-link>
24+
2025
</template>
26+
2127
</el-submenu>
28+
2229
</template>
2330
</div>
2431
</template>
@@ -35,13 +42,6 @@
3542
</script>
3643

3744
<style rel="stylesheet/scss" lang="scss" scoped>
38-
.svg-icon {
39-
margin-right: 15px;
40-
}
41-
42-
.hideSidebar .menu-indent {
43-
display: block;
44-
text-indent: 10px;
45-
}
45+
4646
</style>
4747

0 commit comments

Comments
 (0)