Pārlūkot izejas kodu

style: simplify sidebar scss

xiaoxian521 4 gadi atpakaļ
vecāks
revīzija
b1751beab9
1 mainītis faili ar 36 papildinājumiem un 243 dzēšanām
  1. 36 243
      src/style/sidebar.scss

+ 36 - 243
src/style/sidebar.scss

@@ -1,18 +1,18 @@
-// 暗色主题
-body[data-theme="dark"] {
-  $menuText: #7a80b4;
-  $menuActiveText: #7a80b4;
-  $subMenuActiveText: #f4f4f5;
-  $sideBarWidth: 210px;
-
+@mixin merge-style(
+  // 菜单选中后字体样式
+  $subMenuActiveText,
   //菜单背景
-  $menuBg: #1b2a47;
+  $menuBg,
   // 鼠标覆盖菜单时的背景
-  $menuHover: #2a395b;
+  $menuHover,
   // 子菜单背景
-  $subMenuBg: #1f2d3d;
+  $subMenuBg,
   // 鼠标覆盖子菜单时的背景
-  $subMenuHover: #001528;
+  $subMenuHover
+) {
+  $menuText: #7a80b4;
+  $menuActiveText: #7a80b4;
+  $sideBarWidth: 210px;
 
   .main-container {
     min-height: 100%;
@@ -211,7 +211,7 @@ body[data-theme="dark"] {
     min-width: $sideBarWidth !important;
   }
 
-  // mobile responsive
+  // 手机端
   .mobile {
     .main-container {
       margin-left: 0px;
@@ -239,243 +239,36 @@ body[data-theme="dark"] {
   }
 }
 
+// 暗色主题
+body[data-theme="dark"] {
+  $subMenuActiveText: #f4f4f5;
+  $menuBg: #1b2a47;
+  $menuHover: #2a395b;
+  $subMenuBg: #1f2d3d;
+  $subMenuHover: #001528;
+
+  @include merge-style(
+    $subMenuActiveText,
+    $menuBg,
+    $menuHover,
+    $subMenuBg,
+    $subMenuHover
+  );
+}
+
 // 亮色主题
 body[data-theme="light"] {
-  $menuText: #7a80b4;
-  $menuActiveText: #7a80b4;
   $subMenuActiveText: #409eff;
-  $sideBarWidth: 210px;
-
-  //菜单背景
   $menuBg: #fff;
-  // 鼠标覆盖菜单时的背景
   $menuHover: #e0ebf6;
-  // 子菜单背景
   $subMenuBg: #fff;
-  // 鼠标覆盖子菜单时的背景
   $subMenuHover: #e0ebf6;
 
-  .main-container {
-    min-height: 100%;
-    transition: margin-left 0.28s;
-    margin-left: $sideBarWidth;
-    position: relative;
-  }
-
-  .sidebar-container {
-    transition: width 0.28s;
-    width: $sideBarWidth !important;
-    background-color: $menuBg;
-    height: 100%;
-    position: fixed;
-    font-size: 0px;
-    top: 0;
-    bottom: 0;
-    left: 0;
-    z-index: 1001;
-    overflow: hidden;
-    box-shadow: 0 0 1px #888888;
-
-    // reset element-plus css
-    .horizontal-collapse-transition {
-      transition: 0s width ease-in-out, 0s padding-left ease-in-out,
-        0s padding-right ease-in-out;
-    }
-
-    .scrollbar-wrapper {
-      overflow-x: hidden !important;
-    }
-
-    .el-scrollbar__bar.is-vertical {
-      right: 0px;
-    }
-
-    .el-scrollbar {
-      height: 100%;
-    }
-
-    &.has-logo {
-      .el-scrollbar {
-        height: calc(100% - 50px);
-      }
-    }
-
-    .is-horizontal {
-      display: none;
-    }
-
-    a {
-      display: inline-block;
-      width: 100%;
-      overflow: hidden;
-    }
-
-    .el-menu {
-      border: none;
-      height: 100%;
-      // background-color: $menuBg !important;
-      // width: 100% !important;
-    }
-
-    .el-menu-item,
-    .el-submenu__title {
-      color: $menuText;
-    }
-
-    .el-menu {
-      background-color: transparent;
-    }
-
-    // menu hover
-    .submenu-title-noDropdown,
-    .el-submenu__title {
-      &:hover {
-        background-color: $menuHover !important;
-      }
-      background: $menuBg;
-    }
-
-    .is-active > .el-submenu__title,
-    .is-active.submenu-title-noDropdown {
-      color: $subMenuActiveText !important;
-      i {
-        color: $subMenuActiveText !important;
-      }
-    }
-
-    .is-active {
-      transition: color 0.3s;
-      color: $subMenuActiveText !important;
-    }
-
-    & .nest-menu .el-submenu > .el-submenu__title,
-    & .el-submenu .el-menu-item {
-      font-size: 12px;
-      min-width: $sideBarWidth !important;
-      background-color: $subMenuBg !important;
-
-      &:hover {
-        background-color: $subMenuHover !important;
-      }
-    }
-  }
-
-  .hideSidebar {
-    .sidebar-container {
-      width: 54px !important;
-    }
-
-    .main-container {
-      margin-left: 54px;
-    }
-
-    .submenu-title-noDropdown {
-      padding: 0 !important;
-      position: relative;
-
-      .el-tooltip {
-        padding: 0 !important;
-      }
-    }
-
-    .el-submenu {
-      overflow: hidden;
-      & > .el-submenu__title {
-        .el-submenu__icon-arrow {
-          display: none;
-        }
-      }
-    }
-
-    .el-menu--collapse {
-      margin-left: -5px; //需优化的地方
-      .el-submenu {
-        & > .el-submenu__title {
-          & > span {
-            height: 0;
-            width: 0;
-            overflow: hidden;
-            visibility: hidden;
-            display: inline-block;
-          }
-        }
-      }
-    }
-  }
-
-  // 菜单折叠
-  .el-menu--vertical {
-    .el-menu--popup {
-      background-color: $subMenuBg !important;
-      .el-menu-item {
-        color: $menuText;
-        background-color: $subMenuBg;
-        &:hover {
-          background-color: $subMenuHover;
-        }
-      }
-    }
-    & > .el-menu {
-      i {
-        margin-right: 16px;
-      }
-    }
-
-    .is-active > .el-submenu__title,
-    .is-active.submenu-title-noDropdown {
-      color: $subMenuActiveText !important;
-      i {
-        color: $subMenuActiveText !important;
-      }
-    }
-
-    .is-active {
-      transition: color 0.3s;
-      color: $subMenuActiveText !important;
-    }
-
-    .nest-menu .el-submenu > .el-submenu__title,
-    .el-menu-item {
-      &:hover {
-        // you can use $subMenuHover
-        background-color: $menuHover !important;
-      }
-    }
-  }
-
-  .el-scrollbar__wrap {
-    overflow: auto;
-    height: 100%;
-  }
-
-  .el-menu--collapse .el-menu .el-submenu {
-    min-width: $sideBarWidth !important;
-  }
-
-  // mobile responsive
-  .mobile {
-    .main-container {
-      margin-left: 0px;
-    }
-
-    .sidebar-container {
-      transition: transform 0.28s;
-      width: $sideBarWidth !important;
-    }
-
-    &.hideSidebar {
-      .sidebar-container {
-        pointer-events: none;
-        transition-duration: 0.3s;
-        transform: translate3d(-$sideBarWidth, 0, 0);
-      }
-    }
-  }
-
-  .withoutAnimation {
-    .main-container,
-    .sidebar-container {
-      transition: none;
-    }
-  }
+  @include merge-style(
+    $subMenuActiveText,
+    $menuBg,
+    $menuHover,
+    $subMenuBg,
+    $subMenuHover
+  );
 }