@use './variables.module.scss' as *; #app { .main-container { height: 100%; transition: margin-left 0.28s; margin-left: calc(#{$base-sidebar-width} + 12px); position: relative; background: transparent; } .sidebarHide { margin-left: 0 !important; } .sidebar-container { -webkit-transition: width 0.28s; transition: width 0.28s; width: $base-sidebar-width !important; background: transparent; height: calc(100vh - 24px); position: fixed; font-size: 0; top: 12px; left: 12px; z-index: 1001; overflow: hidden; box-sizing: border-box; padding: 0; border-right: none; -webkit-box-shadow: none; box-shadow: none; // 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: 0; } .el-scrollbar { height: 100%; } .el-scrollbar.theme-light { --side-menu-text: #1f2937; --side-menu-hover-bg: rgba(64, 158, 255, 0.08); --side-menu-hover-text: #111827; --side-menu-active-bg: rgba(64, 158, 255, 0.12); --side-menu-active-text: #409eff; --side-menu-active-border: rgba(64, 158, 255, 0.16); --side-menu-active-line: #409eff; } .el-scrollbar.theme-dark { --side-menu-text: #e5edf8; --side-menu-hover-bg: rgba(255, 255, 255, 0.08); --side-menu-hover-text: #ffffff; --side-menu-active-bg: rgba(64, 158, 255, 0.22); --side-menu-active-text: #ffffff; --side-menu-active-border: rgba(96, 165, 250, 0.24); --side-menu-active-line: #60a5fa; } .is-horizontal { display: none; } a { display: inline-block; width: 100%; overflow: hidden; } .svg-icon { margin-right: 10px; } .el-menu { border: none; height: 100%; width: 100% !important; background: transparent !important; } .el-menu--inline { background: transparent !important; } .el-menu-item, .menu-title { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; } .el-menu-item, .el-sub-menu__title, .el-menu-item .svg-icon, .el-sub-menu__title .svg-icon, .el-sub-menu__icon-arrow { color: var(--side-menu-text) !important; fill: currentColor; } .el-menu-item, .el-sub-menu__title { position: relative; font-weight: 500; } .el-menu-item .el-menu-tooltip__trigger { display: inline-block !important; } // menu hover .theme-dark .submenu-title-noDropdown, .theme-dark .el-sub-menu__title { border-radius: var(--app-radius-md); margin: 3px 8px; &:hover { background-color: var(--side-menu-hover-bg) !important; color: var(--side-menu-hover-text) !important; } } .submenu-title-noDropdown, .el-sub-menu__title { border-radius: var(--app-radius-md); margin: 3px 8px; color: var(--side-menu-text) !important; &:hover { background-color: var(--side-menu-hover-bg) !important; color: var(--side-menu-hover-text) !important; } } & .theme-dark .is-active > .el-sub-menu__title { color: var(--side-menu-active-text) !important; } & .nest-menu .el-sub-menu > .el-sub-menu__title, & .el-sub-menu .el-menu-item { min-width: calc($base-sidebar-width - 16px) !important; border-radius: var(--app-radius-md); height: 40px; margin: 3px 8px; background: transparent !important; &:not(.is-active):hover { background-color: var(--side-menu-hover-bg) !important; color: var(--side-menu-hover-text) !important; } } & .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title, & .theme-dark .el-sub-menu .el-menu-item { border-radius: var(--app-radius-md); height: 40px; margin: 3px 8px; background: transparent !important; &.is-active { background: var(--side-menu-active-bg) !important; color: var(--side-menu-active-text) !important; box-shadow: inset 3px 0 0 var(--side-menu-active-line), inset 0 0 0 1px var(--side-menu-active-border); } &:not(.is-active):hover { // you can use $sub-menuHover background-color: var(--side-menu-hover-bg) !important; color: var(--side-menu-hover-text) !important; } } & .theme-dark .nest-menu .el-sub-menu > .el-sub-menu__title, & .theme-dark .el-menu-item { border-radius: var(--app-radius-md); height: 40px; margin: 3px 8px; background: transparent !important; &.is-active { background: var(--side-menu-active-bg) !important; color: var(--side-menu-active-text) !important; box-shadow: inset 3px 0 0 var(--side-menu-active-line), inset 0 0 0 1px var(--side-menu-active-border); } &:not(.is-active):hover { // you can use $sub-menuHover background-color: var(--side-menu-hover-bg) !important; color: var(--side-menu-hover-text) !important; } } & .nest-menu .el-sub-menu > .el-sub-menu__title, & .el-menu-item { border-radius: var(--app-radius-md); height: 40px; margin: 3px 8px; background: transparent !important; &.is-active { background: var(--side-menu-active-bg) !important; color: var(--side-menu-active-text) !important; box-shadow: inset 3px 0 0 var(--side-menu-active-line), inset 0 0 0 1px var(--side-menu-active-border); } &:not(.is-active):hover { // you can use $sub-menuHover background-color: var(--side-menu-hover-bg) !important; color: var(--side-menu-hover-text) !important; } } } // 收起菜单后的样式 .hideSidebar { .sidebar-container { width: 58px !important; } .main-container { margin-left: 70px; } .sidebar-shell { padding-left: 4px; padding-right: 4px; } .submenu-title-noDropdown { padding: 0 !important; position: relative; height: 40px; width: 40px !important; min-width: 40px !important; margin: 3px auto !important; display: flex; align-items: center; justify-content: center !important; box-sizing: border-box; // 选中状态的菜单 &.is-active { background-color: var(--side-menu-active-bg) !important; color: var(--side-menu-active-text) !important; box-shadow: inset 3px 0 0 var(--side-menu-active-line); } .el-tooltip { padding: 0 !important; } .el-menu-tooltip__trigger { width: 100%; height: 100%; display: inline-flex !important; align-items: center; justify-content: center; line-height: 1; } .svg-icon { margin-right: 0 !important; } } & .el-sub-menu { overflow: hidden; border-radius: var(--app-radius-md); .el-sub-menu__title, .el-sub-menu__title.el-tooltip__trigger { border-radius: var(--app-radius-md); height: 40px; padding: 0 !important; display: flex; align-items: center; justify-content: center !important; line-height: 1; } // 选中状态的菜单 &.is-active .el-sub-menu__title, &.is-active .el-sub-menu__title.el-tooltip__trigger { background-color: var(--side-menu-active-bg) !important; box-shadow: inset 3px 0 0 var(--side-menu-active-line); } & > .el-sub-menu__title { padding: 0 !important; } } .el-menu--collapse { > div > .el-sub-menu { width: 40px !important; min-width: 40px !important; margin: 3px auto !important; } > div > .el-sub-menu > .el-sub-menu__title, > div > .el-sub-menu > .el-sub-menu__title.el-tooltip__trigger { width: 100% !important; min-width: 100% !important; margin: 0 !important; box-sizing: border-box; transform: none; position: relative; } .is-active .svg-icon { fill: currentColor; } > div > .el-sub-menu > .el-sub-menu__title .svg-icon { position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; transform: translate(-50%, -50%); display: block; margin: 0 !important; margin-right: 0 !important; } > div > .el-sub-menu > .el-sub-menu__title { justify-content: center !important; .el-sub-menu__icon-arrow { display: none !important; width: 0 !important; margin: 0 !important; overflow: hidden !important; } & > span { height: 0; width: 0; overflow: hidden; visibility: hidden; display: inline-block; } & > i { height: 0; width: 0; overflow: hidden; visibility: hidden; display: inline-block; } } } } .el-menu--collapse .el-menu .el-sub-menu { min-width: $base-sidebar-width !important; } // mobile responsive .mobile { .main-container { margin-left: 0px; } .sidebar-container { transition: transform 0.28s; width: $base-sidebar-width !important; } &.hideSidebar { .sidebar-container { pointer-events: none; transition-duration: 0.3s; transform: translate3d(calc(-#{$base-sidebar-width} - 12px), 0, 0); } } } .withoutAnimation { .main-container, .sidebar-container { transition: none; } } } // when menu collapsed .el-menu--vertical { & > .el-menu { .svg-icon { margin-right: 16px; } } } // 收起菜单后悬浮的菜单样式 .el-popper.is-pure{ border-radius: var(--app-radius-md); box-shadow: var(--app-shadow-md); .el-menu--popup{ border-radius: var(--app-radius-md); } .el-menu-item{ border-radius: var(--app-radius-sm); } }