更改主题样式设置

This commit is contained in:
izory 2021-10-09 10:19:20 +08:00
parent 43a00c78be
commit 077e05ca36
7 changed files with 103 additions and 55 deletions

View File

@ -3,22 +3,26 @@
.main-container { .main-container {
min-height: 100%; min-height: 100%;
transition: margin-left .28s; transition: margin-left .28s;
margin-left: $sideBarWidth; margin-left: $base-sidebar-width;
position: relative; position: relative;
} }
.sidebar-container { .sidebar-container {
-webkit-transition: width .28s;
transition: width 0.28s; transition: width 0.28s;
width: $sideBarWidth !important; width: $base-sidebar-width !important;
background-color: $menuBg; background-color: $base-menu-background;
height: 100%; height: 100%;
position: fixed; position: fixed;
font-size: 0; font-size: 0px;
top: 0; top: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
z-index: 1001; z-index: 1001;
overflow: hidden; overflow: hidden;
// 有改动
-webkit-box-shadow: 2px 0 7px rgba(0,21,41 , .15);
box-shadow: 2px 0 7px rgba(0,21,41 , .15);
// reset element-ui css // reset element-ui css
.horizontal-collapse-transition { .horizontal-collapse-transition {
@ -30,7 +34,7 @@
} }
.el-scrollbar__bar.is-vertical { .el-scrollbar__bar.is-vertical {
right: 0; right: 0px;
} }
.el-scrollbar { .el-scrollbar {
@ -63,25 +67,39 @@
width: 100% !important; width: 100% !important;
} }
.el-menu-item, .el-submenu__title {
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
}
// menu hover // menu hover
.submenu-title-noDropdown, .submenu-title-noDropdown,
.el-submenu__title { .el-submenu__title {
&:hover { &:hover {
background-color: $menuHover !important; background-color: rgba(0, 0, 0, 0.06) !important;
} }
} }
.is-active>.el-submenu__title { & .theme-dark .is-active > .el-submenu__title {
color: $subMenuActiveText !important; color: $base-menu-color-active !important;
} }
& .nest-menu .el-submenu>.el-submenu__title, & .nest-menu .el-submenu>.el-submenu__title,
& .el-submenu .el-menu-item { & .el-submenu .el-menu-item {
min-width: $sideBarWidth !important; min-width: $base-sidebar-width !important;
background-color: $subMenuBg !important;
&:hover { &:hover {
background-color: $subMenuHover !important; background-color: rgba(0, 0, 0, 0.06) !important;
}
}
& .theme-dark .nest-menu .el-submenu>.el-submenu__title,
& .theme-dark .el-submenu .el-menu-item {
background-color: $base-sub-menu-background !important;
&:hover {
background-color: $base-sub-menu-hover !important;
} }
} }
} }
@ -118,9 +136,6 @@
margin-left: 20px; margin-left: 20px;
} }
.el-submenu__icon-arrow {
display: none;
}
} }
} }
@ -140,25 +155,25 @@
} }
.el-menu--collapse .el-menu .el-submenu { .el-menu--collapse .el-menu .el-submenu {
min-width: $sideBarWidth !important; min-width: $base-sidebar-width !important;
} }
// mobile responsive // mobile responsive
.mobile { .mobile {
.main-container { .main-container {
margin-left: 0; margin-left: 0px;
} }
.sidebar-container { .sidebar-container {
transition: transform .28s; transition: transform .28s;
width: $sideBarWidth !important; width: $base-sidebar-width !important;
} }
&.hideSidebar { &.hideSidebar {
.sidebar-container { .sidebar-container {
pointer-events: none; pointer-events: none;
transition-duration: 0.3s; transition-duration: 0.3s;
transform: translate3d(-$sideBarWidth, 0, 0); transform: translate3d(-$base-sidebar-width, 0, 0);
} }
} }
} }
@ -184,7 +199,7 @@
.el-menu-item { .el-menu-item {
&:hover { &:hover {
// you can use $subMenuHover // you can use $subMenuHover
background-color: $menuHover !important; background-color: rgba(0, 0, 0, 0.06) !important;
} }
} }

View File

@ -8,28 +8,35 @@ $tiffany: #4AB7BD;
$yellow:#FEC171; $yellow:#FEC171;
$panGreen: #30B08F; $panGreen: #30B08F;
// sidebar // 默认菜单主题风格
$menuText:#bfcbd9; $base-menu-color:#bfcbd9;
$menuActiveText:#409EFF; $base-menu-color-active:#f4f4f5;
$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951 $base-menu-background:#304156;
$base-logo-title-color: #ffffff;
$menuBg:#304156; $base-menu-light-color:rgba(0,0,0,.70);
$menuHover:#263445; $base-menu-light-background:#ffffff;
$base-logo-light-title-color: #001529;
$subMenuBg:#1f2d3d; $base-sub-menu-background:#1f2d3d;
$subMenuHover:#001528; $base-sub-menu-hover:#001528;
$sideBarWidth: 200px;
$base-sidebar-width: 200px;
// the :export directive is the magic sauce for webpack // the :export directive is the magic sauce for webpack
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
:export { :export {
menuText: $menuText; menuColor: $base-menu-color;
menuActiveText: $menuActiveText; menuLightColor: $base-menu-light-color;
subMenuActiveText: $subMenuActiveText; menuColorActive: $base-menu-color-active;
menuBg: $menuBg; menuBackground: $base-menu-background;
menuHover: $menuHover; menuLightBackground: $base-menu-light-background;
subMenuBg: $subMenuBg; subMenuBackground: $base-sub-menu-background;
subMenuHover: $subMenuHover; subMenuHover: $base-sub-menu-hover;
sideBarWidth: $sideBarWidth; sideBarWidth: $base-sidebar-width;
logoTitleColor: $base-logo-title-color;
logoLightTitleColor: $base-logo-light-title-color
} }

View File

@ -107,6 +107,7 @@ export default {
key: "theme", key: "theme",
value: val, value: val,
}); });
this.theme = val;
}, },
handleTheme(val) { handleTheme(val) {
this.$store.dispatch("settings/changeSetting", { this.$store.dispatch("settings/changeSetting", {
@ -118,6 +119,12 @@ export default {
// //
saveSetting() { saveSetting() {
// this.$modal.loading("..."); // this.$modal.loading("...");
const loading = this.$loading({
lock: true,
text: "正在保存到本地,请稍后...",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
localStorage.setItem( localStorage.setItem(
"layout-setting", "layout-setting",
`{ `{
@ -129,7 +136,7 @@ export default {
}` }`
); );
this.msgSuccess("保存成功"); this.msgSuccess("保存成功");
// setTimeout(this.$modal.closeLoading(), 1000); setTimeout(loading.close(), 2000);
}, },
resetSetting() { resetSetting() {
// this.$modal.loading("..."); // this.$modal.loading("...");

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="sidebar-logo-container" :class="{'collapse':collapse}"> <!-- <div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<transition name="sidebarLogoFade"> <transition name="sidebarLogoFade">
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/"> <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
<img v-if="logo" :src="logo" class="sidebar-logo"> <img v-if="logo" :src="logo" class="sidebar-logo">
@ -10,30 +10,48 @@
<h1 class="sidebar-title">{{ title }} </h1> <h1 class="sidebar-title">{{ title }} </h1>
</router-link> </router-link>
</transition> </transition>
</div> -->
<div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<transition name="sidebarLogoFade">
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
<img v-if="logo" :src="logo" class="sidebar-logo" />
<h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
</router-link>
<router-link v-else key="expand" class="sidebar-logo-link" to="/">
<img v-if="logo" :src="logo" class="sidebar-logo" />
<h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
</router-link>
</transition>
</div> </div>
</template> </template>
<script> <script>
import logoImg from '@/assets/logo/logo.png' import logoImg from "@/assets/logo/logo.png";
import variables from "@/assets/styles/variables.scss";
export default { export default {
name: 'SidebarLogo', name: "SidebarLogo",
props: { props: {
collapse: { collapse: {
type: Boolean, type: Boolean,
required: true required: true,
} },
},
computed: {
variables() {
return variables;
},
sideTheme() {
return this.$store.state.settings.sideTheme;
},
}, },
data() { data() {
return { return {
title: 'ZrAdmin.NET', title: "ZrAdmin.NET",
logo: logoImg logo: logoImg,
} };
},
mounted(){
// this.title = this.$store.getters.name;
}
} }
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -1,8 +1,9 @@
<template> <template>
<div :class="{'has-logo':showLogo}"> <div :class="{'has-logo':showLogo}" :style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
<logo v-if="showLogo" :collapse="isCollapse" /> <logo v-if="showLogo" :collapse="isCollapse" />
<el-scrollbar wrap-class="scrollbar-wrapper"> <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
<el-menu :default-active="activeMenu" :collapse="isCollapse" :background-color="variables.menuBg" :text-color="variables.menuText" :unique-opened="true" :active-text-color="settings.theme" :collapse-transition="false" mode="vertical"> <el-menu :default-active="activeMenu" :collapse="isCollapse" :background-color="settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground"
:text-color="settings.sideTheme === 'theme-dark' ? variables.menuColor : variables.menuLightColor" :unique-opened="true" :active-text-color="settings.theme" :collapse-transition="false" mode="vertical">
<sidebar-item v-for="(route, index) in permission_routes" :key="route.path + index" :item="route" :base-path="route.path" /> <sidebar-item v-for="(route, index) in permission_routes" :key="route.path + index" :item="route" :base-path="route.path" />
</el-menu> </el-menu>
</el-scrollbar> </el-scrollbar>

View File

@ -90,7 +90,7 @@ export default {
top: 0; top: 0;
right: 0; right: 0;
z-index: 9; z-index: 9;
width: calc(100% - #{$sideBarWidth}); width: calc(100% - #{$base-sidebar-width});
transition: width 0.28s; transition: width 0.28s;
} }

View File

@ -3,7 +3,7 @@ module.exports = {
/** /**
* 侧边栏主题 深色主题theme-dark浅色主题theme-light * 侧边栏主题 深色主题theme-dark浅色主题theme-light
*/ */
sideTheme: 'theme-dark', sideTheme: 'theme-light',
/** /**
* 显示是否系统布局配置 * 显示是否系统布局配置