更改主题样式设置

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 {
min-height: 100%;
transition: margin-left .28s;
margin-left: $sideBarWidth;
margin-left: $base-sidebar-width;
position: relative;
}
.sidebar-container {
-webkit-transition: width .28s;
transition: width 0.28s;
width: $sideBarWidth !important;
background-color: $menuBg;
width: $base-sidebar-width !important;
background-color: $base-menu-background;
height: 100%;
position: fixed;
font-size: 0;
font-size: 0px;
top: 0;
bottom: 0;
left: 0;
z-index: 1001;
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
.horizontal-collapse-transition {
@ -30,7 +34,7 @@
}
.el-scrollbar__bar.is-vertical {
right: 0;
right: 0px;
}
.el-scrollbar {
@ -63,25 +67,39 @@
width: 100% !important;
}
.el-menu-item, .el-submenu__title {
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
}
// menu hover
.submenu-title-noDropdown,
.el-submenu__title {
&:hover {
background-color: $menuHover !important;
background-color: rgba(0, 0, 0, 0.06) !important;
}
}
.is-active>.el-submenu__title {
color: $subMenuActiveText !important;
& .theme-dark .is-active > .el-submenu__title {
color: $base-menu-color-active !important;
}
& .nest-menu .el-submenu>.el-submenu__title,
& .el-submenu .el-menu-item {
min-width: $sideBarWidth !important;
background-color: $subMenuBg !important;
min-width: $base-sidebar-width !important;
&: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;
}
.el-submenu__icon-arrow {
display: none;
}
}
}
@ -140,25 +155,25 @@
}
.el-menu--collapse .el-menu .el-submenu {
min-width: $sideBarWidth !important;
min-width: $base-sidebar-width !important;
}
// mobile responsive
.mobile {
.main-container {
margin-left: 0;
margin-left: 0px;
}
.sidebar-container {
transition: transform .28s;
width: $sideBarWidth !important;
width: $base-sidebar-width !important;
}
&.hideSidebar {
.sidebar-container {
pointer-events: none;
transition-duration: 0.3s;
transform: translate3d(-$sideBarWidth, 0, 0);
transform: translate3d(-$base-sidebar-width, 0, 0);
}
}
}
@ -184,7 +199,7 @@
.el-menu-item {
&:hover {
// 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;
$panGreen: #30B08F;
// sidebar
$menuText:#bfcbd9;
$menuActiveText:#409EFF;
$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951
// 默认菜单主题风格
$base-menu-color:#bfcbd9;
$base-menu-color-active:#f4f4f5;
$base-menu-background:#304156;
$base-logo-title-color: #ffffff;
$menuBg:#304156;
$menuHover:#263445;
$base-menu-light-color:rgba(0,0,0,.70);
$base-menu-light-background:#ffffff;
$base-logo-light-title-color: #001529;
$subMenuBg:#1f2d3d;
$subMenuHover:#001528;
$base-sub-menu-background:#1f2d3d;
$base-sub-menu-hover:#001528;
$sideBarWidth: 200px;
$base-sidebar-width: 200px;
// the :export directive is the magic sauce for webpack
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass
:export {
menuText: $menuText;
menuActiveText: $menuActiveText;
subMenuActiveText: $subMenuActiveText;
menuBg: $menuBg;
menuHover: $menuHover;
subMenuBg: $subMenuBg;
subMenuHover: $subMenuHover;
sideBarWidth: $sideBarWidth;
menuColor: $base-menu-color;
menuLightColor: $base-menu-light-color;
menuColorActive: $base-menu-color-active;
menuBackground: $base-menu-background;
menuLightBackground: $base-menu-light-background;
subMenuBackground: $base-sub-menu-background;
subMenuHover: $base-sub-menu-hover;
sideBarWidth: $base-sidebar-width;
logoTitleColor: $base-logo-title-color;
logoLightTitleColor: $base-logo-light-title-color
}

View File

@ -32,7 +32,7 @@
<theme-picker style="float: right;height: 26px;margin: -3px 8px 0 0;" @change="themeChange" />
</div>
<el-divider/>
<el-divider />
<div class="drawer-item">
<span>开启 Tags-Views</span>
<el-switch v-model="tagsView" class="drawer-switch" />
@ -107,6 +107,7 @@ export default {
key: "theme",
value: val,
});
this.theme = val;
},
handleTheme(val) {
this.$store.dispatch("settings/changeSetting", {
@ -118,6 +119,12 @@ export default {
//
saveSetting() {
// this.$modal.loading("...");
const loading = this.$loading({
lock: true,
text: "正在保存到本地,请稍后...",
spinner: "el-icon-loading",
background: "rgba(0, 0, 0, 0.7)",
});
localStorage.setItem(
"layout-setting",
`{
@ -129,7 +136,7 @@ export default {
}`
);
this.msgSuccess("保存成功");
// setTimeout(this.$modal.closeLoading(), 1000);
setTimeout(loading.close(), 2000);
},
resetSetting() {
// this.$modal.loading("...");

View File

@ -1,5 +1,5 @@
<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">
<router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
<img v-if="logo" :src="logo" class="sidebar-logo">
@ -10,30 +10,48 @@
<h1 class="sidebar-title">{{ title }} </h1>
</router-link>
</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>
</template>
<script>
import logoImg from '@/assets/logo/logo.png'
import logoImg from "@/assets/logo/logo.png";
import variables from "@/assets/styles/variables.scss";
export default {
name: 'SidebarLogo',
name: "SidebarLogo",
props: {
collapse: {
type: Boolean,
required: true
}
required: true,
},
},
computed: {
variables() {
return variables;
},
sideTheme() {
return this.$store.state.settings.sideTheme;
},
},
data() {
return {
title: 'ZrAdmin.NET',
logo: logoImg
title: "ZrAdmin.NET",
logo: logoImg,
};
}
},
mounted(){
// this.title = this.$store.getters.name;
}
}
};
</script>
<style lang="scss" scoped>

View File

@ -1,8 +1,9 @@
<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" />
<el-scrollbar 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-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
<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" />
</el-menu>
</el-scrollbar>

View File

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

View File

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