Quellcode durchsuchen

perf[Style]: optimize the sidebar style to make it better to set

Pan vor 6 Jahren
Ursprung
Commit
c1719929cb
3 geänderte Dateien mit 63 neuen und 22 gelöschten Zeilen
  1. 36 18
      src/styles/sidebar.scss
  2. 20 1
      src/styles/variables.scss
  3. 7 3
      src/views/layout/components/Sidebar/index.vue

+ 36 - 18
src/styles/sidebar.scss

@@ -1,6 +1,6 @@
1
 #app {
1
 #app {
2
 
2
 
3
-  // 主体区域
3
+  // 主体区域 Main container
4
   .main-container {
4
   .main-container {
5
     min-height: 100%;
5
     min-height: 100%;
6
     transition: margin-left .28s;
6
     transition: margin-left .28s;
@@ -8,7 +8,7 @@
8
     position: relative;
8
     position: relative;
9
   }
9
   }
10
 
10
 
11
-  // 侧边栏
11
+  // 侧边栏 Sidebar container
12
   .sidebar-container {
12
   .sidebar-container {
13
     transition: width 0.28s;
13
     transition: width 0.28s;
14
     width: $sideBarWidth !important;
14
     width: $sideBarWidth !important;
@@ -26,10 +26,6 @@
26
       transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
26
       transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
27
     }
27
     }
28
 
28
 
29
-    .el-scrollbar__bar.is-vertical {
30
-      right: 0px;
31
-    }
32
-
33
     .scrollbar-wrapper {
29
     .scrollbar-wrapper {
34
       overflow-x: hidden !important;
30
       overflow-x: hidden !important;
35
 
31
 
@@ -38,6 +34,10 @@
38
       }
34
       }
39
     }
35
     }
40
 
36
 
37
+    .el-scrollbar__bar.is-vertical {
38
+      right: 0px;
39
+    }
40
+
41
     .is-horizontal {
41
     .is-horizontal {
42
       display: none;
42
       display: none;
43
     }
43
     }
@@ -58,8 +58,26 @@
58
       width: 100% !important;
58
       width: 100% !important;
59
     }
59
     }
60
 
60
 
61
+    // menu hover
62
+    .submenu-title-noDropdown,
63
+    .el-submenu__title {
64
+      &:hover {
65
+        background-color: $menuHover !important;
66
+      }
67
+    }
68
+
61
     .is-active>.el-submenu__title {
69
     .is-active>.el-submenu__title {
62
-      color: #f4f4f5 !important;
70
+      color: $subMenuActiveText !important;
71
+    }
72
+
73
+    & .nest-menu .el-submenu>.el-submenu__title,
74
+    & .el-submenu .el-menu-item {
75
+      min-width: $sideBarWidth !important;
76
+      background-color: $subMenuBg !important;
77
+
78
+      &:hover {
79
+        background-color: $subMenuHover !important;
80
+      }
63
     }
81
     }
64
   }
82
   }
65
 
83
 
@@ -108,21 +126,11 @@
108
     }
126
     }
109
   }
127
   }
110
 
128
 
111
-  .sidebar-container .nest-menu .el-submenu>.el-submenu__title,
112
-  .sidebar-container .el-submenu .el-menu-item {
113
-    min-width: $sideBarWidth !important;
114
-    background-color: $subMenuBg !important;
115
-
116
-    &:hover {
117
-      background-color: $menuHover !important;
118
-    }
119
-  }
120
-
121
   .el-menu--collapse .el-menu .el-submenu {
129
   .el-menu--collapse .el-menu .el-submenu {
122
     min-width: $sideBarWidth !important;
130
     min-width: $sideBarWidth !important;
123
   }
131
   }
124
 
132
 
125
-  //适配移动端
133
+  // 适配移动端, Mobile responsive
126
   .mobile {
134
   .mobile {
127
     .main-container {
135
     .main-container {
128
       margin-left: 0px;
136
       margin-left: 0px;
@@ -135,6 +143,7 @@
135
 
143
 
136
     &.hideSidebar {
144
     &.hideSidebar {
137
       .sidebar-container {
145
       .sidebar-container {
146
+        pointer-events: none;
138
         transition-duration: 0.3s;
147
         transition-duration: 0.3s;
139
         transform: translate3d(-$sideBarWidth, 0, 0);
148
         transform: translate3d(-$sideBarWidth, 0, 0);
140
       }
149
       }
@@ -150,10 +159,19 @@
150
   }
159
   }
151
 }
160
 }
152
 
161
 
162
+// when menu collapsed
153
 .el-menu--vertical {
163
 .el-menu--vertical {
154
   &>.el-menu {
164
   &>.el-menu {
155
     .svg-icon {
165
     .svg-icon {
156
       margin-right: 16px;
166
       margin-right: 16px;
157
     }
167
     }
158
   }
168
   }
169
+
170
+  .nest-menu .el-submenu>.el-submenu__title,
171
+  .el-menu-item {
172
+    &:hover {
173
+      // You can use $subMenuHover
174
+      background-color: $menuHover !important;
175
+    }
176
+  }
159
 }
177
 }

+ 20 - 1
src/styles/variables.scss

@@ -1,5 +1,24 @@
1
 //sidebar
1
 //sidebar
2
+$menuText:#bfcbd9;
3
+$menuActiveText:#409EFF;
4
+$subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951
5
+
2
 $menuBg:#304156;
6
 $menuBg:#304156;
7
+$menuHover:#263445;
8
+
3
 $subMenuBg:#1f2d3d;
9
 $subMenuBg:#1f2d3d;
4
-$menuHover:#001528;
10
+$subMenuHover:#001528;
11
+
5
 $sideBarWidth: 180px;
12
 $sideBarWidth: 180px;
13
+
14
+// the :export directive is the magic sauce for webpack
15
+:export {
16
+  menuText: $menuText;
17
+  menuActiveText: $menuActiveText;
18
+  subMenuActiveText: $subMenuActiveText;
19
+  menuBg: $menuBg;
20
+  menuHover: $menuHover;
21
+  subMenuBg: $subMenuBg;
22
+  subMenuHover: $subMenuHover;
23
+  sideBarWidth: $sideBarWidth;
24
+}

+ 7 - 3
src/views/layout/components/Sidebar/index.vue

@@ -4,10 +4,10 @@
4
       :show-timeout="200"
4
       :show-timeout="200"
5
       :default-active="$route.path"
5
       :default-active="$route.path"
6
       :collapse="isCollapse"
6
       :collapse="isCollapse"
7
+      :background-color="variables.menuBg"
8
+      :text-color="variables.menuText"
9
+      :active-text-color="variables.menuActiveText"
7
       mode="vertical"
10
       mode="vertical"
8
-      background-color="#304156"
9
-      text-color="#bfcbd9"
10
-      active-text-color="#409EFF"
11
     >
11
     >
12
       <sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path"/>
12
       <sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path"/>
13
     </el-menu>
13
     </el-menu>
@@ -16,6 +16,7 @@
16
 
16
 
17
 <script>
17
 <script>
18
 import { mapGetters } from 'vuex'
18
 import { mapGetters } from 'vuex'
19
+import variables from '@/styles/variables.scss'
19
 import SidebarItem from './SidebarItem'
20
 import SidebarItem from './SidebarItem'
20
 
21
 
21
 export default {
22
 export default {
@@ -27,6 +28,9 @@ export default {
27
     routes() {
28
     routes() {
28
       return this.$router.options.routes
29
       return this.$router.options.routes
29
     },
30
     },
31
+    variables() {
32
+      return variables
33
+    },
30
     isCollapse() {
34
     isCollapse() {
31
       return !this.sidebar.opened
35
       return !this.sidebar.opened
32
     }
36
     }