sidebar.scss 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. #app {
  2. .main-container {
  3. min-height: 100%;
  4. transition: margin-left .28s;
  5. margin-left: $sideBarWidth;
  6. position: relative;
  7. }
  8. .sidebar-container {
  9. transition: width 0.28s;
  10. width: $sideBarWidth !important;
  11. background-color: $menuBg;
  12. height: 100%;
  13. position: fixed;
  14. font-size: 14px;
  15. top: 0;
  16. bottom: 0;
  17. left: 0;
  18. z-index: 1001;
  19. overflow: hidden;
  20. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  21. // reset element-ui css
  22. .horizontal-collapse-transition {
  23. transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
  24. }
  25. .scrollbar-wrapper {
  26. overflow-x: hidden !important;
  27. }
  28. .el-scrollbar__bar.is-vertical {
  29. right: 0px;
  30. }
  31. .el-scrollbar {
  32. height: 100%;
  33. }
  34. &.has-logo {
  35. .el-scrollbar {
  36. height: calc(100% - 50px);
  37. }
  38. }
  39. .is-horizontal {
  40. display: none;
  41. }
  42. a {
  43. display: inline-block;
  44. width: 100%;
  45. overflow: hidden;
  46. }
  47. .svg-icon {
  48. margin-right: 12px;
  49. font-size: 16px;
  50. vertical-align: middle;
  51. }
  52. .el-menu {
  53. border: none;
  54. height: 100%;
  55. width: 100% !important;
  56. }
  57. .el-menu-item, .el-submenu__title {
  58. height: 50px;
  59. line-height: 50px;
  60. padding: 0 16px !important;
  61. transition: all 0.3s ease;
  62. &:hover {
  63. background-color: $menuHover !important;
  64. color: $menuActiveText !important;
  65. }
  66. }
  67. // menu hover
  68. .submenu-title-noDropdown,
  69. .el-submenu__title {
  70. &:hover {
  71. background-color: $menuHover !important;
  72. }
  73. }
  74. .is-active>.el-submenu__title {
  75. color: $subMenuActiveText !important;
  76. }
  77. .el-submenu {
  78. .el-menu {
  79. background-color: $subMenuBg !important;
  80. margin: 0;
  81. padding: 5px;
  82. position: relative;
  83. &::before {
  84. content: '';
  85. position: absolute;
  86. left: 24px;
  87. top: 0;
  88. bottom: 0;
  89. width: 1px;
  90. background: rgba(255, 255, 255, 0.1);
  91. }
  92. }
  93. }
  94. & .nest-menu .el-submenu>.el-submenu__title,
  95. & .el-submenu .el-menu-item {
  96. min-width: $sideBarWidth !important;
  97. background-color: transparent !important;
  98. padding: 0 16px 0 40px !important;
  99. font-size: 13px;
  100. height: 44px;
  101. line-height: 44px;
  102. margin: 2px 0;
  103. &:hover {
  104. background-color: $subMenuHover !important;
  105. color: $menuActiveText !important;
  106. }
  107. &::before {
  108. content: '';
  109. position: absolute;
  110. left: 24px;
  111. top: 50%;
  112. width: 6px;
  113. height: 1px;
  114. background-color: rgba(255, 255, 255, 0.5);
  115. }
  116. }
  117. .el-menu-item.is-active {
  118. background-color: $menuHover !important;
  119. color: $menuActiveText !important;
  120. &::before {
  121. background-color: $menuActiveText;
  122. }
  123. }
  124. // 调整箭头位置
  125. .el-submenu__icon-arrow {
  126. right: 15px;
  127. }
  128. }
  129. .hideSidebar {
  130. .sidebar-container {
  131. width: 54px !important;
  132. }
  133. .main-container {
  134. margin-left: 54px;
  135. }
  136. .submenu-title-noDropdown {
  137. padding: 0 !important;
  138. position: relative;
  139. .el-tooltip {
  140. padding: 0 !important;
  141. .svg-icon {
  142. margin-left: 20px;
  143. }
  144. }
  145. }
  146. .el-submenu {
  147. overflow: hidden;
  148. &>.el-submenu__title {
  149. padding: 0 !important;
  150. .svg-icon {
  151. margin-left: 20px;
  152. }
  153. .el-submenu__icon-arrow {
  154. display: none;
  155. }
  156. }
  157. }
  158. .el-menu--collapse {
  159. .el-submenu {
  160. &>.el-submenu__title {
  161. &>span {
  162. height: 0;
  163. width: 0;
  164. overflow: hidden;
  165. visibility: hidden;
  166. display: inline-block;
  167. }
  168. }
  169. }
  170. }
  171. }
  172. .el-menu--collapse .el-menu .el-submenu {
  173. min-width: $sideBarWidth !important;
  174. }
  175. // mobile responsive
  176. .mobile {
  177. .main-container {
  178. margin-left: 0px;
  179. }
  180. .sidebar-container {
  181. transition: transform .28s;
  182. width: $sideBarWidth !important;
  183. }
  184. &.hideSidebar {
  185. .sidebar-container {
  186. pointer-events: none;
  187. transition-duration: 0.3s;
  188. transform: translate3d(-$sideBarWidth, 0, 0);
  189. }
  190. }
  191. }
  192. .withoutAnimation {
  193. .main-container,
  194. .sidebar-container {
  195. transition: none;
  196. }
  197. }
  198. }
  199. // when menu collapsed
  200. .el-menu--vertical {
  201. &>.el-menu {
  202. .svg-icon {
  203. margin-right: 16px;
  204. }
  205. }
  206. .nest-menu .el-submenu>.el-submenu__title,
  207. .el-menu-item {
  208. &:hover {
  209. // you can use $subMenuHover
  210. background-color: $menuHover !important;
  211. }
  212. }
  213. // the scroll bar appears when the subMenu is too long
  214. >.el-menu--popup {
  215. max-height: 100vh;
  216. overflow-y: auto;
  217. &::-webkit-scrollbar-track-piece {
  218. background: #d3dce6;
  219. }
  220. &::-webkit-scrollbar {
  221. width: 6px;
  222. }
  223. &::-webkit-scrollbar-thumb {
  224. background: #99a9bf;
  225. border-radius: 20px;
  226. }
  227. }
  228. }