Преглед изворни кода

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

Pan пре 6 година
родитељ
комит
c1719929cb
3 измењених фајлова са 63 додато и 22 уклоњено
  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 1
 #app {
2 2
 
3
-  // 主体区域
3
+  // 主体区域 Main container
4 4
   .main-container {
5 5
     min-height: 100%;
6 6
     transition: margin-left .28s;
@@ -8,7 +8,7 @@
8 8
     position: relative;
9 9
   }
10 10
 
11
-  // 侧边栏
11
+  // 侧边栏 Sidebar container
12 12
   .sidebar-container {
13 13
     transition: width 0.28s;
14 14
     width: $sideBarWidth !important;
@@ -26,10 +26,6 @@
26 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 29
     .scrollbar-wrapper {
34 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 41
     .is-horizontal {
42 42
       display: none;
43 43
     }
@@ -58,8 +58,26 @@
58 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 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 129
   .el-menu--collapse .el-menu .el-submenu {
122 130
     min-width: $sideBarWidth !important;
123 131
   }
124 132
 
125
-  //适配移动端
133
+  // 适配移动端, Mobile responsive
126 134
   .mobile {
127 135
     .main-container {
128 136
       margin-left: 0px;
@@ -135,6 +143,7 @@
135 143
 
136 144
     &.hideSidebar {
137 145
       .sidebar-container {
146
+        pointer-events: none;
138 147
         transition-duration: 0.3s;
139 148
         transform: translate3d(-$sideBarWidth, 0, 0);
140 149
       }
@@ -150,10 +159,19 @@
150 159
   }
151 160
 }
152 161
 
162
+// when menu collapsed
153 163
 .el-menu--vertical {
154 164
   &>.el-menu {
155 165
     .svg-icon {
156 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 1
 //sidebar
2
+$menuText:#bfcbd9;
3
+$menuActiveText:#409EFF;
4
+$subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951
5
+
2 6
 $menuBg:#304156;
7
+$menuHover:#263445;
8
+
3 9
 $subMenuBg:#1f2d3d;
4
-$menuHover:#001528;
10
+$subMenuHover:#001528;
11
+
5 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 4
       :show-timeout="200"
5 5
       :default-active="$route.path"
6 6
       :collapse="isCollapse"
7
+      :background-color="variables.menuBg"
8
+      :text-color="variables.menuText"
9
+      :active-text-color="variables.menuActiveText"
7 10
       mode="vertical"
8
-      background-color="#304156"
9
-      text-color="#bfcbd9"
10
-      active-text-color="#409EFF"
11 11
     >
12 12
       <sidebar-item v-for="route in routes" :key="route.path" :item="route" :base-path="route.path"/>
13 13
     </el-menu>
@@ -16,6 +16,7 @@
16 16
 
17 17
 <script>
18 18
 import { mapGetters } from 'vuex'
19
+import variables from '@/styles/variables.scss'
19 20
 import SidebarItem from './SidebarItem'
20 21
 
21 22
 export default {
@@ -27,6 +28,9 @@ export default {
27 28
     routes() {
28 29
       return this.$router.options.routes
29 30
     },
31
+    variables() {
32
+      return variables
33
+    },
30 34
     isCollapse() {
31 35
       return !this.sidebar.opened
32 36
     }