element.scss 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. @use 'mixins/index.scss' as *;
  2. /* Button 按钮
  3. ------------------------------- */
  4. .el-button {
  5. font-family: var(--el-font-family);
  6. }
  7. .el-button.is-text {
  8. .el-icon {
  9. font-size: var(--el-font-size-medium);
  10. }
  11. }
  12. // 按钮使用第三方字体图标正确用法
  13. // <el-button>
  14. // <SvgIcon name="iconfont icon-yunshangchuan_o" class="el-icon" />
  15. // <span>笑笑</span>
  16. // </el-button>
  17. /* Input 输入框、InputNumber 计数器
  18. ------------------------------- */
  19. // 菜单搜索
  20. .el-autocomplete-suggestion__wrap {
  21. max-height: 280px !important;
  22. }
  23. // InputNumber无控制器时与Input保持一致
  24. .el-input-number.is-without-controls .el-input__wrapper {
  25. padding-left: 7px !important;
  26. padding-right: 7px !important;
  27. .el-input__inner {
  28. text-align: left !important;
  29. }
  30. }
  31. .el-date-editor {
  32. //--el-date-editor-width: 220px;
  33. //--el-date-editor-monthrange-width: 300px;
  34. --el-date-editor-daterange-width: 250px;
  35. //--el-date-editor-datetimerange-width: 400px;
  36. }
  37. /* Form 表单
  38. ------------------------------- */
  39. .el-form {
  40. // 用于修改弹窗时表单内容间隔太大问题,如系统设置的新增菜单弹窗里的表单内容
  41. .el-form-item:last-of-type {
  42. margin-bottom: 0 !important;
  43. }
  44. // 修复行内表单最后一个 el-form-item 位置下移问题
  45. &.el-form--inline {
  46. // .el-form-item--large.el-form-item:last-of-type {
  47. // margin-bottom: 22px !important;
  48. // }
  49. // .el-form-item--default.el-form-item:last-of-type,
  50. // .el-form-item--small.el-form-item:last-of-type {
  51. // margin-bottom: 18px !important;
  52. // }
  53. .el-form-item,.el-form-item:last-of-type {
  54. margin: 5px 15px !important;
  55. .el-select,.el-input {
  56. width: 200px !important;
  57. }
  58. }
  59. }
  60. // https://gitee.com/lyt-top/vue-next-admin/issues/I5K1PM
  61. .el-form-item .el-form-item__label .el-icon {
  62. margin-right: 0px;
  63. }
  64. }
  65. /* Alert 警告
  66. ------------------------------- */
  67. .el-alert {
  68. border: 1px solid;
  69. }
  70. .el-alert__title {
  71. word-break: break-all;
  72. }
  73. /* Message 消息提示
  74. ------------------------------- */
  75. .el-message {
  76. min-width: unset !important;
  77. padding: 15px !important;
  78. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.02);
  79. }
  80. /* NavMenu 导航菜单
  81. ------------------------------- */
  82. // 鼠标 hover 时颜色
  83. .el-menu-hover-bg-color {
  84. background-color: var(--next-bg-menuBarActiveColor) !important;
  85. //background-color: var(--el-color-primary-light-7) !important;
  86. }
  87. // 默认样式修改
  88. .el-menu {
  89. border-right: none !important;
  90. width: auto;
  91. .el-icon {
  92. font-size: var(--el-font-size-medium);
  93. }
  94. .el-sub-menu__icon-arrow {
  95. margin-top: 0;
  96. top: unset;
  97. }
  98. }
  99. .el-menu-item,
  100. .el-sub-menu__title {
  101. color: var(--next-bg-menuBarColor);
  102. // height: 44px !important;
  103. // line-height: 44px !important;
  104. }
  105. // 修复点击左侧菜单折叠再展开时,宽度不跟随问题
  106. .el-menu--collapse {
  107. width: 64px !important;
  108. }
  109. // 外部链接时
  110. .el-menu-item a,
  111. .el-menu-item a:hover,
  112. .el-menu-item i,
  113. .el-sub-menu__title i {
  114. color: inherit;
  115. text-decoration: none;
  116. }
  117. // 第三方图标字体间距/大小设置
  118. .el-menu-item .iconfont,
  119. .el-sub-menu .iconfont,
  120. .el-menu-item .fa,
  121. .el-sub-menu .fa {
  122. @include generalIcon(var(--el-font-size-medium), var(--el-menu-icon-width));
  123. }
  124. // 水平菜单、横向菜单高亮 背景色,鼠标 hover 时,有子级菜单的背景色
  125. .el-menu-item.is-active,
  126. .el-sub-menu.is-active .el-sub-menu__title,
  127. .el-sub-menu:not(.is-opened):hover .el-sub-menu__title {
  128. @extend .el-menu-hover-bg-color;
  129. color: var(--el-color-primary-dark-2);
  130. }
  131. .el-sub-menu:not(.is-active) .el-sub-menu__title {
  132. color: var(--next-bg-menuBarColor);
  133. }
  134. // 鼠标 hover 时背景色
  135. .el-menu-item:hover {
  136. //@extend .el-menu-hover-bg-color;
  137. background-color: var(--el-color-primary-light-9);
  138. }
  139. .el-sub-menu.is-active.is-opened .el-sub-menu__title {
  140. background-color: unset !important;
  141. }
  142. // 当前选中菜单右侧边框
  143. .el-menu-item.is-active {
  144. border-right: solid 3px var(--el-color-primary);
  145. }
  146. // 子级菜单背景颜色
  147. // .el-menu--inline {
  148. // background: var(--next-bg-menuBar-light-1);
  149. // }
  150. // 水平菜单、横向菜单折叠 a 标签
  151. .el-popper.is-dark a {
  152. color: var(--el-color-white) !important;
  153. text-decoration: none;
  154. }
  155. // 水平菜单、横向菜单折叠背景色
  156. .el-popper.is-pure.is-light {
  157. // 水平菜单
  158. .el-menu--vertical {
  159. background: var(--next-bg-menuBar);
  160. .el-sub-menu.is-active .el-sub-menu__title {
  161. color: var(--el-menu-active-color);
  162. }
  163. .el-popper.is-pure.is-light {
  164. .el-menu--vertical {
  165. .el-sub-menu .el-sub-menu__title {
  166. background-color: unset !important;
  167. color: var(--next-bg-menuBarColor);
  168. }
  169. .el-sub-menu.is-active .el-sub-menu__title {
  170. color: var(--el-menu-active-color);
  171. }
  172. }
  173. }
  174. }
  175. // 横向菜单
  176. .el-menu--horizontal {
  177. background: var(--next-bg-topBar);
  178. .el-menu-item,
  179. .el-sub-menu {
  180. // height: 45px !important;
  181. // line-height: 45px !important;
  182. color: var(--next-bg-topBarColor);
  183. .el-sub-menu__title {
  184. // height: 45px !important;
  185. // line-height: 45px !important;
  186. color: var(--next-bg-topBarColor);
  187. }
  188. .el-popper.is-pure.is-light {
  189. .el-menu--horizontal {
  190. .el-sub-menu .el-sub-menu__title {
  191. background-color: unset !important;
  192. color: var(--next-bg-topBarColor);
  193. }
  194. .el-sub-menu.is-active .el-sub-menu__title {
  195. color: var(--el-menu-active-color);
  196. }
  197. }
  198. }
  199. }
  200. .el-menu-item.is-active,
  201. .el-sub-menu.is-active .el-sub-menu__title {
  202. color: var(--el-menu-active-color);
  203. }
  204. // 鼠标 hover 时背景色
  205. .el-menu-item:hover {
  206. background-color: var(--el-color-primary-light-9);
  207. }
  208. }
  209. }
  210. // 横向菜单(经典、横向)布局
  211. .el-menu.el-menu--horizontal {
  212. border-bottom: none !important;
  213. width: 100% !important;
  214. .el-menu-item,
  215. .el-sub-menu__title {
  216. height: 50px;
  217. line-height: 50px;
  218. color: var(--next-bg-topBarColor);
  219. }
  220. .el-menu-item:not(.is-active):hover,
  221. .el-sub-menu:not(.is-active):hover .el-sub-menu__title {
  222. color: var(--next-bg-topBarColor);
  223. //border-right: solid 3px var(--el-color-primary);
  224. }
  225. // 鼠标 hover 时背景色
  226. .el-menu-item:hover {
  227. background-color: var(--el-color-primary-light-9);
  228. }
  229. // 菜单激活时去掉全局右边框
  230. .el-menu-item.is-active {
  231. border-right: none;
  232. }
  233. }
  234. // 菜单收起时,图标不居中问题
  235. .el-menu--collapse {
  236. .el-menu-item .iconfont,
  237. .el-sub-menu .iconfont,
  238. .el-menu-item .fa,
  239. .el-sub-menu .fa {
  240. margin-right: 0 !important;
  241. }
  242. .el-sub-menu__title {
  243. padding-right: 0 !important;
  244. }
  245. }
  246. /* Tabs 标签页
  247. ------------------------------- */
  248. .el-tabs__header {
  249. border-bottom: 1px solid var(--el-border-color-light);
  250. }
  251. .el-tabs__nav-wrap::after {
  252. content: none;
  253. }
  254. /* Dropdown 下拉菜单
  255. ------------------------------- */
  256. .el-dropdown-menu {
  257. list-style: none !important;
  258. /*修复 Dropdown 下拉菜单样式问题 2022.03.04*/
  259. }
  260. .el-dropdown-menu .el-dropdown-menu__item {
  261. white-space: nowrap;
  262. &:not(.is-disabled):hover {
  263. background-color: var(--el-dropdown-menuItem-hover-fill);
  264. color: var(--el-dropdown-menuItem-hover-color);
  265. }
  266. }
  267. /* Steps 步骤条
  268. ------------------------------- */
  269. .el-step__icon-inner {
  270. font-size: 30px !important;
  271. font-weight: 400 !important;
  272. }
  273. .el-step__title {
  274. font-size: 14px;
  275. }
  276. /* Dialog 对话框
  277. ------------------------------- */
  278. .el-overlay {
  279. overflow: hidden;
  280. .el-overlay-dialog {
  281. display: flex;
  282. align-items: center;
  283. justify-content: center;
  284. position: unset !important;
  285. width: 100%;
  286. height: 100%;
  287. .el-dialog {
  288. padding: 0 !important;
  289. margin: 0 auto !important;
  290. position: absolute;
  291. max-height: 100vh;
  292. .el-dialog__body {
  293. padding: 18px !important;
  294. max-height: calc(100vh - 37px);
  295. }
  296. .el-dialog__body:has(+ .el-dialog__footer) {
  297. max-height: calc(100vh - 37px - 47px);
  298. }
  299. }
  300. }
  301. }
  302. .el-dialog.is-fullscreen {
  303. overflow: hidden;
  304. display: flex;
  305. flex-direction: column;
  306. .el-dialog__body {
  307. flex: 1;
  308. }
  309. .el-dialog__footer {
  310. padding: 15px;
  311. border-top: 1px solid var(--el-border-color);
  312. }
  313. }
  314. .el-dialog__body {
  315. //max-height: calc(100vh - 160px) !important;
  316. overflow-y: auto;
  317. overflow-x: auto;
  318. }
  319. // .el-dialog__title{
  320. // font-size: 14px;
  321. // color: #FFF;
  322. // //font-weight: 700;
  323. // line-height: normal;
  324. // }
  325. .el-dialog__header {
  326. --el-dialog-title-font-size: var(--el-font-size-base);
  327. margin-right: 0;
  328. padding: 8px;
  329. border-radius: var(--el-dialog-border-radius) var(--el-dialog-border-radius) 0 0;
  330. background: var(--el-color-primary);
  331. color: #fff;
  332. height: 37px;
  333. line-height: 21px;
  334. .el-dialog__title {
  335. color: #FFF;
  336. }
  337. }
  338. .el-dialog__footer {
  339. padding: 0 15px 15px;
  340. // border-top: 1px solid var(--el-color-primary-light-7);
  341. }
  342. .el-dialog__headerbtn {
  343. height: 37px;
  344. width: 40px;
  345. font-weight: 900;
  346. .el-dialog__close {
  347. color: #fff;
  348. }
  349. }
  350. .el-dialog__headerbtn:hover .el-dialog__close {
  351. color: var(--el-color-danger) !important;
  352. }
  353. /* Card 卡片
  354. ------------------------------- */
  355. .el-card__header {
  356. padding: 15px 20px;
  357. }
  358. .el-card__body {
  359. --el-card-padding: 8px;
  360. }
  361. // 由于card没有size属性,所以通过其子元素来判断,当组件大小选择为默认时
  362. .el-card__body:has(.el-table--default) {
  363. --el-card-padding: 20px;
  364. }
  365. /* Table 表格 element plus 2.2.0 版本
  366. ------------------------------- */
  367. .el-table {
  368. // 表头背景色
  369. --el-table-header-bg-color: var(--next-bg-main-color);
  370. .el-button.is-text {
  371. padding: 0;
  372. }
  373. // 表头字体颜色
  374. thead {
  375. color: var(--el-text-color-regular);
  376. th {
  377. font-weight: 500;
  378. }
  379. }
  380. }
  381. .el-table .el-table__cell {
  382. &:has(.cell .el-button, .el-tag, .el-switch, .el-avatar) {
  383. padding: 0;
  384. .cell { text-overflow: clip; }
  385. }
  386. .el-button.is-text {
  387. height: 20px;
  388. }
  389. .el-text--large {
  390. font-size: var(--el-font-size-base);;
  391. }
  392. .el-button--large {
  393. --el-button-size: 32px;
  394. }
  395. .el-tag--large {
  396. height: 28px;
  397. }
  398. .el-button--default {
  399. height: 28px;
  400. }
  401. .el-button [class*=el-icon]+span{
  402. margin-left: 4px;
  403. }
  404. .iconfont {
  405. font-size: unset !important;
  406. }
  407. }
  408. .el-table [class*=el-table__row--level] .el-table__expand-icon {
  409. vertical-align: middle;
  410. }
  411. $--el-table-text-color: #fb6d49;
  412. /*防止分栏布局二级菜单很多时,滚动条消失问题*/
  413. .layout-columns-warp .layout-aside .el-scrollbar__view {
  414. height: unset !important;
  415. }
  416. /* Pagination 分页
  417. ------------------------------- */
  418. // .el-pagination__editor {
  419. // margin-right: 8px;
  420. // }
  421. /*深色模式时分页高亮问题*/
  422. .el-pagination.is-background .btn-next.is-active,
  423. .el-pagination.is-background .btn-prev.is-active,
  424. .el-pagination.is-background .el-pager li.is-active {
  425. background-color: var(--el-color-primary) !important;
  426. color: var(--el-color-white) !important;
  427. }
  428. // 分页组件靠右显示
  429. .el-pagination {
  430. float: right;
  431. margin: 8px 0 0 0 !important;
  432. }
  433. // 强制给分页组件的下拉框设置宽度
  434. .el-pagination--small {
  435. .el-select {
  436. width: 100px !important;
  437. }
  438. }
  439. /* scrollbar
  440. ------------------------------- */
  441. .el-scrollbar__bar {
  442. z-index: 4;
  443. }
  444. /*防止页面切换时,滚动条高度不变的问题(滚动条高度非滚动条滚动高度)*/
  445. .el-scrollbar__wrap {
  446. max-height: 100%;
  447. }
  448. .el-select-dropdown .el-scrollbar__wrap {
  449. overflow-x: scroll !important;
  450. }
  451. /*修复Select 选择器高度问题*/
  452. .el-select-dropdown__wrap {
  453. max-height: 274px !important;
  454. }
  455. /*用于界面高度自适应(main.vue),区分 scrollbar__view,防止其它使用 scrollbar 的地方出现滚动条消失*/
  456. .layout-container-view .el-scrollbar__view {
  457. height: 100%;
  458. }
  459. /* Drawer 抽屉
  460. ------------------------------- */
  461. .el-drawer {
  462. --el-drawer-padding-primary: unset !important;
  463. .el-drawer__header {
  464. padding: 8px !important;
  465. display: flex;
  466. align-items: center;
  467. margin-bottom: 0 !important;
  468. border-bottom: 1px solid var(--el-border-color);
  469. color: var(--el-color-white);
  470. background-color: var(--el-color-primary);
  471. }
  472. .el-drawer__body {
  473. width: 100%;
  474. height: 100%;
  475. overflow: auto;
  476. }
  477. .el-drawer__footer {
  478. padding: 5px;
  479. }
  480. }
  481. .el-drawer__close-btn:hover .el-drawer__close {
  482. color: var(--el-color-danger) !important;
  483. }
  484. .el-tree {
  485. --el-tree-node-content-height: 30px;
  486. .el-tree-node__content {
  487. line-height: var(--el-tree-node-content-height);
  488. }
  489. }
  490. // hack列表页
  491. .layout-parent {
  492. height: 0;
  493. overflow: auto;
  494. // 方案一 如果怕影响其他页面,可以直接修改 src/views/home/index.vue 中 .home-container样式。
  495. // 方案二 此处修改是为了不修改框架原始页面,方便后期同步升级。
  496. // 自行取舍
  497. // 工作台 滚动条
  498. .home-container {
  499. overflow: auto !important;
  500. }
  501. // Table页自动撑满页面
  502. > div:has(.full-table) {
  503. display: flex;
  504. flex-direction: column;
  505. height: 100%;
  506. .full-table {
  507. flex: 1;
  508. display: flex;
  509. flex-direction: column;
  510. justify-content: space-between;
  511. .el-card__body {
  512. flex: 1;
  513. height: 0;
  514. display: flex;
  515. //padding: 5px 5px 0px 5px;
  516. flex-direction: column;
  517. justify-content: space-between;
  518. .el-table {
  519. flex: 1;
  520. }
  521. .el-pagination > span:first-child {
  522. flex: 1;
  523. text-align: right;
  524. }
  525. }
  526. }
  527. }
  528. }
  529. /* Splitter 分隔面板
  530. ------------------------------- */
  531. .smallbar-el-splitter {
  532. .el-splitter-bar {
  533. width: 8px !important;
  534. .el-splitter-bar__dragger {
  535. height: 100px !important;
  536. }
  537. }
  538. }