From 21232ab15a4b7d17d535434adeb6246269137859 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期六, 31 十二月 2022 14:12:07 +0800
Subject: [PATCH] 1.左菜单背景颜色实现深色与浅色切换
---
src/layout/index.vue | 16 +++--
src/settings.js | 4 +
src/styles/variables.scss | 4 +
src/layout/components/Sidebar/index.vue | 17 +++--
src/layout/components/Settings/index.vue | 16 ++++
src/store/modules/settings.js | 11 +++
src/styles/sidebar.scss | 112 +++++++++++++++++++++++++++++++++---
7 files changed, 152 insertions(+), 28 deletions(-)
diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue
index 6d1c54a..38d6331 100644
--- a/src/layout/components/Settings/index.vue
+++ b/src/layout/components/Settings/index.vue
@@ -26,8 +26,20 @@
style="display: block"
:active-color="$store.state.settings.theme"
inactive-color="#ccc"
- active-text="妯睆"
- inactive-text="绔栧睆"
+ active-text="妯悜"
+ inactive-text="绔栧悜"
+ />
+ </div>
+ <div class="drawer-item" style="display: flex;justify-content: space-between">
+ <span>宸︿晶棰滆壊</span>
+ <el-switch
+ v-model="$store.state.settings.leftBackgroundColorValue"
+ style="display: block"
+ active-color="#304156"
+ :disabled="$store.state.settings.menuIsHorizontal"
+ inactive-color="#ccc"
+ active-text="娣辫壊"
+ inactive-text="娴呰壊"
/>
</div>
diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue
index a9549df..7b27013 100644
--- a/src/layout/components/Sidebar/index.vue
+++ b/src/layout/components/Sidebar/index.vue
@@ -3,14 +3,15 @@
<logo v-if="showLogo" :collapse="isCollapse" />
- <div v-if="$store.state.app.sidebar.opened&&!$store.state.settings.menuIsHorizontal" class="layoutLogo" />
+ <div v-if="$store.state.app.sidebar.opened&&!$store.state.settings.menuIsHorizontal" :class="{'leftBackgroundColorValue':$store.state.settings.leftBackgroundColorValue}" class="layoutLogo" />
+
<el-scrollbar wrap-class="scrollbar-wrapper" class="scrollbarWrapperClass">
<el-menu
v-if="!$store.state.settings.menuIsHorizontal"
:default-active="activeMenu"
:collapse="isCollapse"
- :background-color="variables.menuBg"
- :text-color="variables.menuText"
+ :background-color="$store.state.settings.leftBackgroundColorValue?'#f8f8fa':variables.menuBg"
+ :text-color="$store.state.settings.leftBackgroundColorValue?`rgb(48, 65, 86,0.8)`:variables.menuText"
:active-text-color="variables.menuActiveText"
:collapse-transition="false"
:unique-opened="false"
@@ -107,6 +108,9 @@
height: 90px;
background: url("../../../assets/images/layout_logo.png") no-repeat;
}
+.leftBackgroundColorValue{
+ background-color: #e0e0e0;
+}
.scrollbarWrapperClass {
margin-top: 90px;
@@ -120,7 +124,6 @@
.el-button--text:focus {
color: white;
-
}
//#app .sidebar-container .el-submenu .el-menu-item {
@@ -167,7 +170,7 @@
cursor: default;
}
-.el-menu {
- background-color: #213145 !important;
-}
+//.el-menu {
+// background-color: #213145 !important;
+//}
</style>
diff --git a/src/layout/index.vue b/src/layout/index.vue
index 0f9328e..3add521 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -1,19 +1,23 @@
<template>
<div :class="classObj" class="app-wrapper">
- <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
+ <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/>
<sidebar
- :class="$store.state.settings.menuIsHorizontal?'sidebar-container-sideBarWidthIsMenuHorizontal':'sidebar-container'"
+ :class="$store.state.settings.menuIsHorizontal?
+ 'sidebar-container-sideBarWidthIsMenuHorizontal':
+ $store.state.settings.leftBackgroundColorValue?
+ 'sidebar-container-leftBackgroundColorValue':
+ 'sidebar-container'"
/>
<div
:class="$store.state.settings.menuIsHorizontal?'main-container-sideBarWidthIsMenuHorizontal': 'main-container'"
>
<div :class="{'fixed-header':fixedHeader}">
- <navbar />
- <tags-view v-if="needTagsView" />
+ <navbar/>
+ <tags-view v-if="needTagsView"/>
</div>
- <app-main />
+ <app-main/>
<right-panel v-if="showSettings">
- <settings />
+ <settings/>
</right-panel>
</div>
</div>
diff --git a/src/settings.js b/src/settings.js
index 50e6a26..3679656 100644
--- a/src/settings.js
+++ b/src/settings.js
@@ -28,6 +28,8 @@
headBackgroundColorValue: false, // 澶撮儴鑳屾櫙棰滆壊
- menuIsHorizontal: true// 鑿滃崟鏄惁鏄í灞�
+ menuIsHorizontal: false, // 鑿滃崟鏄惁鏄í灞�
+
+ leftBackgroundColorValue: false// 宸︿晶鏍忚儗鏅鑹�
}
diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js
index 622867c..ee727e7 100644
--- a/src/store/modules/settings.js
+++ b/src/store/modules/settings.js
@@ -1,9 +1,18 @@
import defaultSettings from '@/settings'
import variables from '@/styles/element-variables.scss'
-const { showSettings, tagsView, fixedHeader, sidebarLogo, headBackgroundColorValue, menuIsHorizontal } = defaultSettings
+const {
+ showSettings,
+ tagsView,
+ fixedHeader,
+ sidebarLogo,
+ headBackgroundColorValue,
+ menuIsHorizontal,
+ leftBackgroundColorValue
+} = defaultSettings
const state = {
+ leftBackgroundColorValue: leftBackgroundColorValue,//宸﹁竟鑳屾櫙棰滆壊
headBackgroundColorValue: headBackgroundColorValue, // 澶撮儴鑳屾櫙棰滆壊
menuIsHorizontal: menuIsHorizontal, // 鑿滃崟鏄惁鏄í灞�
theme: variables.theme,
diff --git a/src/styles/sidebar.scss b/src/styles/sidebar.scss
index 47f711f..44909f8 100644
--- a/src/styles/sidebar.scss
+++ b/src/styles/sidebar.scss
@@ -73,7 +73,7 @@
border: none;
height: 100%;
width: 100% !important;
- }
+ }
// menu hover
.submenu-title-noDropdown,
@@ -83,11 +83,11 @@
}
}
- .is-active>.el-submenu__title {
+ .is-active > .el-submenu__title {
color: $subMenuActiveText !important;
}
- & .nest-menu .el-submenu>.el-submenu__title,
+ & .nest-menu .el-submenu > .el-submenu__title,
& .el-submenu .el-menu-item {
min-width: $sideBarWidth !important;
background-color: $subMenuBg !important;
@@ -97,6 +97,95 @@
}
}
}
+
+
+ .sidebar-container-leftBackgroundColorValue {
+ transition: width 0.28s;
+ width: $sideBarWidth !important;
+ background-color: $menuBgLeftBackgroundColorValue;
+ height: 100%;
+ position: fixed;
+ font-size: 0px;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1001;
+ overflow: hidden;
+
+ // reset element-ui 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;
+ }
+
+ .svg-icon {
+ margin-right: 16px;
+ }
+
+ .sub-el-icon {
+ margin-right: 12px;
+ margin-left: -2px;
+ }
+
+ .el-menu {
+ border: none;
+ height: 100%;
+ width: 100% !important;
+ }
+
+ // menu hover
+ .submenu-title-noDropdown,
+ .el-submenu__title {
+ &:hover {
+ //background-color: $menuHover !important;
+ background-color: #eee !important;
+ }
+ }
+
+ .is-active > .el-submenu__title {
+ //color: $subMenuActiveText !important;
+ color: #000 !important;
+ }
+
+ & .nest-menu .el-submenu > .el-submenu__title,
+ & .el-submenu .el-menu-item {
+ min-width: $sideBarWidth !important;
+ background-color: #f8f8fa !important;
+
+ &:hover {
+ //background-color: $subMenuHover !important;
+ background-color: #eee !important;
+ }
+ }
+ }
+
.sidebar-container-sideBarWidthIsMenuHorizontal {
transition: width 0.28s;
@@ -167,11 +256,11 @@
}
}
- .is-active>.el-submenu__title {
+ .is-active > .el-submenu__title {
color: $subMenuActiveText !important;
}
- & .nest-menu .el-submenu>.el-submenu__title,
+ & .nest-menu .el-submenu > .el-submenu__title,
& .el-submenu .el-menu-item {
min-width: $sideBarWidth !important;
background-color: $subMenuBg !important;
@@ -211,7 +300,7 @@
.el-submenu {
overflow: hidden;
- &>.el-submenu__title {
+ & > .el-submenu__title {
padding: 0 !important;
.svg-icon {
@@ -230,8 +319,8 @@
.el-menu--collapse {
.el-submenu {
- &>.el-submenu__title {
- &>span {
+ & > .el-submenu__title {
+ & > span {
height: 0;
width: 0;
overflow: hidden;
@@ -278,17 +367,18 @@
// when menu collapsed
.el-menu--vertical {
- &>.el-menu {
+ & > .el-menu {
.svg-icon {
margin-right: 16px;
}
+
.sub-el-icon {
margin-right: 12px;
margin-left: -2px;
}
}
- .nest-menu .el-submenu>.el-submenu__title,
+ .nest-menu .el-submenu > .el-submenu__title,
.el-menu-item {
&:hover {
// you can use $subMenuHover
@@ -297,7 +387,7 @@
}
// the scroll bar appears when the subMenu is too long
- >.el-menu--popup {
+ > .el-menu--popup {
max-height: 100vh;
overflow-y: auto;
diff --git a/src/styles/variables.scss b/src/styles/variables.scss
index 7901a7b..f7dac18 100644
--- a/src/styles/variables.scss
+++ b/src/styles/variables.scss
@@ -13,6 +13,9 @@
$sideBarWidthIsMenuHorizontal: 0; //褰撹彍鍗曟í灞忔椂鐨勪晶杈规爮楂樺害
+
+$menuBgLeftBackgroundColorValue: #f8f8fa; //褰撹彍鍗曟í灞忔椂鐨勪晶杈规爮楂樺害
+
// the :export directive is the magic sauce for webpack
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
:export {
@@ -25,4 +28,5 @@
subMenuHover: $subMenuHover;
sideBarWidth: $sideBarWidth;
sideBarWidthIsMenuHorizontal:$sideBarWidthIsMenuHorizontal;
+ menuBgLeftBackgroundColorValue:$menuBgLeftBackgroundColorValue;
}
--
Gitblit v1.9.3