提示:本文仅是记录我修改element-plus等组件库的css变量,
具体【实现主题色切换看这篇】即可

文章目录
-
- 1.文件划分
- 2.src/style/index.scss入口文件
- 3.src/style/theme.scss主题色切换维护
- 4.src/style/_color-utils.scss动态生成element-plus的scss变量
- [5.src/style/element.scss 默认element-plus的light主题色](#5.src/style/element.scss 默认element-plus的light主题色)
- 6.src/style/element-dark.scss深色的element-plus主题色
- 7.src/style/reset-vxetable.scss默认vxetable的主题色
- 8.src/style/vxe-ui-dark.scss深色的vxetable主题色
- [9.src/style/base.scss 基础样式](#9.src/style/base.scss 基础样式)
- 10.src/style/setting.scss通用类名
- 11.src/style/variable.scss通用变量
- [12.src/style/yan-page.scss 页面样式](#12.src/style/yan-page.scss 页面样式)
1.文件划分
main.js引入
javascript
import "@/style/index.scss"

2.src/style/index.scss入口文件
javascript
@use "./base.scss";
@use "./setting.scss";
@use "element-plus/theme-chalk/src/index.scss";
@use "./yan-page.scss";
@import "./reset-vxetable";
@import "./theme.scss";
// 深色模式手动修改class色(这里记录的就是通过css变量可能会影响多个组件样式,只能通过具体类名修改具体组件样式。或者是主题色渲染出来不是自己想要的,特殊处理下样式)
.dark {
// 下拉
.el-select-dropdown__item.is-hovering {
background-color: var(--my-hover-color);
}
.el-select-dropdown__item.is-selected {
color: #fff;
background-color: var(--theme-color-primary);
}
.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected::after {
background-color: var(--my-light-color);
}
.el-select-dropdown__item.is-disabled {
color: var(--my-disabled-color);
}
// 下拉多选
.el-select__selection .el-tag {
color: #fff;
background-color: var(--my-btn-select-bgc); // var(--my-hover-color);
}
.el-tag .el-tag__close {
color: #fff;
}
// 树
.el-tree {
background: #24435e; // 背景色
--el-tree-node-hover-bg-color: #2c5272; // hover
}
// 单选多选
.el-radio {
--el-radio-input-bg-color: var(--my-btn-bgc); // 单选填充色-可选
}
.el-checkbox {
--el-checkbox-bg-color: var(--my-btn-bgc); // 多选填充色-可选
}
.el-radio__input.is-disabled + span.el-radio__label,
.el-checkbox__input.is-disabled + span.el-checkbox__label {
color: var(--my-disabled-color);
}
// 弹框
.el-dialog,
.el-overlay {
--el-dialog-bg-color: #2f5779;
.el-form {
background-color: #2f5779;
}
.wbg {
background-color: transparent;
}
}
.jg-dialog .el-dialog__header {
border-bottom-color: var(--my-btn-border-color);
}
.jg-dialog .el-dialog__footer {
border-top-color: var(--my-btn-border-color);
}
.el-table__body tr:hover > td {
background-color: var(--my-btn-bgc) !important;
}
.el-table th.el-table__cell {
background-color: var(--my-btn-bgc); // 表格头背景
}
.col_bgc {
background-color: var(--my-btn-bgc);
color: #fff;
}
.my-drawer .el-drawer__header {
border-bottom-color: var(--my-btn-border-color);
}
// // message
// .el-message {
// --el-color-success-light-9: rgb(28.3, 37.4, 23.8);
// }
// 按钮 抛弃生成色 使用UI设计稿
.el-button--primary.is-link {
color: var(--my-light-color); // 操作列按钮
}
.el-button--primary.is-disabled {
color: var(--my-disabled-color); // 操作列按钮
}
.el-button--primary.is-link:hover,
.el-button--primary.is-disabled:hover {
color: var(--my-disabled-color); // 操作列按钮
}
// form表单内容
.el-form-item__content {
color: #fff;
}
// tip
.el-popper.is-dark {
color: #fff;
background: var(--theme-color-primary);
border: 1px solid var(--theme-color-primary);
.el-popper__arrow::before {
border: 1px solid var(--theme-color-primary);
background: var(--theme-color-primary);
right: 0;
}
}
//通用修改原黑色与白色标题名称
.title_name {
color: #fff !important;
}
}
// 实现切换主题动画
::view-transition-old(root),
::view-transition-new(root) {
animation: none;
mix-blend-mode: normal;
}
::view-transition-old(root) {
z-index: 1;
}
::view-transition-new(root) {
z-index: 2147483646;
}
.dark::view-transition-old(root) {
z-index: 2147483646;
}
.dark::view-transition-new(root) {
z-index: 1;
}
// 滚动条设置
::-webkit-scrollbar-track-piece {
//滚动条凹槽的颜色,还可以设置边框属性
background-color: var(--my-scrollbar-track-color);
}
::-webkit-scrollbar {
//滚动条的宽度
width: 6px;
height: 6px;
}
::-webkit-scrollbar-thumb {
//滚动条的设置
background-color: var(--my-scrollbar-color);
background-clip: padding-box;
min-height: 10px;
border-radius: 6px;
}
::-webkit-scrollbar-thumb:hover {
background-color: var(--my-scrollbar-hover-color);
}
// 右下角小方块
::-webkit-scrollbar-corner {
background-color: transparent;
}
3.src/style/theme.scss主题色切换维护
javascript
/** element内置暗黑主题 */
@use "element-plus/theme-chalk/src/dark/css-vars.scss" as *;
// 可以进行一些样式的覆盖
html {
--my-scrollbar-track-color: #f8f8f8; // 滚动条凹槽颜色
--my-scrollbar-color: #dddddd; // 滚动条颜色
--my-scrollbar-hover-color: #bbb; // 滚动条hover颜色
// 替换色
--my-link-color: #11716f; // 链接颜色
--my-link-color2: #00706b; // 链接颜色
--my-link-color3: #007d7b; // 顶部导航色
--my-link-active: #0fa081; // 顶部导航选中色
--my-primary-checkout: #007d7b; // 切换主题色
--my-333-color: #333;
--my-eff3f8-color: #eff3f8;
--my-flow-color: #f2f0f0; // 页面自定义颜色
}
html.dark {
--my-main-bgc: #253d52; // 页面背景色
--my-btn-bgc: #234a6b; // 按钮背景色、表头、灰色区、tab多页签颜色\ 单选多选填充色
--my-btn-select-bgc: #0084cb; // 选中背景色
--my-btn-disabled-bgc: #3d5366; // 单选、多选、输入框等组件禁用背景色
--my-disabled-color: #8d9095; // #617586; // 禁用文本颜色
--my-btn-border-color: #347cbb; // 按钮边框色\弹框边框色
--my-light-color: #65c9ff; // 高亮文本颜色、链接颜色
--my-placeholder-color: #8cbce3; // placeholder
--my-hover-color: #5c9dd5; // 自己hover
--my-select-bgc: #2a699e; // 下拉框背景色
--my-table-light-color: rgba(35, 74, 107, 0.4); // 表格斑马线
--my-scrollbar-track-color: transparent; // 滚动条凹槽颜色
--my-scrollbar-color: #234a6b; // 滚动条颜色
--my-scrollbar-hover-color: var(--my-btn-select-bgc); // 滚动条hover颜色
// 基本状态色
--theme-color-primary: #0084cb;
--theme-color-success: #60c888;
--theme-color-warning: #d7bf0a;
--theme-color-danger: #f56c6c;
--theme-color-error: #cd7b00;
--theme-color-info: #909399;
.wbg {
background-color: var(--my-main-bgc);
}
.theme_div {
background-color: #1fff;
}
// 差异化样式
// 替换色
--my-link-color: var(--my-light-color); // 链接颜色
--my-link-color2: var(--my-light-color); // 链接颜色
--my-link-color3: var(--my-main-bgc); // 顶部导航色
--my-link-active: var(--my-btn-select-bgc); // 顶部导航选中色
--my-primary-checkout: var(--theme-color-primary); // 切换主题色
--my-333-color: #fff;
--my-eff3f8-color: var(--my-main-bgc);
--my-flow-color: var(--my-btn-bgc); // 页面自定义颜色
}
@import "./element-dark.scss";
@import "./vxe-ui-dark.scss";
4.src/style/_color-utils.scss动态生成element-plus的scss变量
javascript
@use "sass:color";
// 增强版颜色混合函数
@function adjust-hover($base, $percentage: 10%) {
@if type-of($base) == "string" and str-index($base, "var(") {
@return unquote("color-mix(in srgb, #{$base} 90%, white 10%)");
}
@return color.mix(white, $base, $percentage);
}
@function adjust-active($base, $percentage: 20%) {
@if type-of($base) == "string" and str-index($base, "var(") {
@return unquote("color-mix(in srgb, #{$base} 80%, black 20%)");
}
@return color.mix(black, $base, $percentage);
}
@mixin generate-color-variants($name, $base-color) {
--el-color-#{$name}: #{$base-color};
--el-color-#{$name}-light-3: #{adjust-hover($base-color, 30%)};
--el-color-#{$name}-light-5: #{adjust-hover($base-color, 50%)};
--el-color-#{$name}-light-7: #{adjust-hover($base-color, 70%)};
--el-color-#{$name}-light-8: #{adjust-active($base-color, 50%)};
// --el-color-#{$name}-light-9: #{adjust-active($base-color, 90%)}; // 按照Ui样式手动书写
--el-color-#{$name}-dark-2: #{adjust-active($base-color, 20%)};
// 专门为按钮添加的hover变量
--el-button-#{$name}-hover-bg-color: #{adjust-hover($base-color)};
--el-button-#{$name}-active-bg-color: #{adjust-active($base-color)};
}
5.src/style/element.scss 默认element-plus的light主题色
javascript
// index.scss
@forward "element-plus/theme-chalk/src/common/var.scss" with (
$colors: (
"white": #ffffff,
"black": #000000,
"primary": (
"base": #007d7b
),
"success": (
"base": #8bc34a
),
"warning": (
"base": #ffc107
),
"danger": (
"base": #f56c6c
),
"error": (
"base": #ff5722
),
"info": (
"base": #909399
)
)
);
6.src/style/element-dark.scss深色的element-plus主题色
注释掉的css最好别打开,可能这一个变量影响多个组件样式
javascript
/** element内置暗黑主题 */
@use "element-plus/theme-chalk/src/dark/css-vars.scss" as *;
@use "./color-utils" as color;
html.dark {
// Element Plus 主色
--el-color-primary: var(--theme-color-primary);
--el-color-success: var(--theme-color-success);
--el-color-warning: var(--theme-color-warning);
--el-color-danger: var(--theme-color-danger);
--el-color-error: var(--theme-color-error);
--el-color-info: var(--theme-color-info);
// 动态生成颜色
@include color.generate-color-variants("primary", #0084cb);
@include color.generate-color-variants("success", #60c888);
@include color.generate-color-variants("warning", #d7bf0a);
@include color.generate-color-variants("danger", #f56c6c);
@include color.generate-color-variants("error", #cd7b00);
@include color.generate-color-variants("info", #909399);
--el-color-primary-light-9: rgba(43, 128, 185, 0.1);
--el-color-success-light-9: rgba(96, 200, 136, 0.1);
--el-color-warning-light-9: rgba(255, 153, 0, 0.1);
--el-color-danger-light-9: rgba(245, 108, 108, 0.1);
--el-color-error-light-9: rgba(226, 201, 60, 0.1);
--el-color-info-light-9: rgba(153, 153, 153, 0.1);
// --el-fill-color-blank: var(--my-btn-bgc); // 表单输入框、下拉、时间等填充色-可选
--el-fill-color-light: var(--my-btn-disabled-bgc); // 单选填充色-禁用
--el-border-color-extra-light: var(--my-btn-disabled-bgc); // 多选填充色-禁用
--el-border-color: var(--my-btn-border-color); // 边框色
--el-bg-color: var(--my-main-bgc); // 诸多组件背景色
--el-text-color-primary: #fff; // 主文字颜色
// --el-bg-color-page: #f1ff;
// --el-text-color-regular: #f1ff;
// --el-text-color-secondary: #f1ff;
--el-input-focus-border-color: var(--el-color-primary); // 表单组件聚焦边框色
--el-border-color-hover: var(--my-hover-color); // 表单组件hover边框色
--el-input-clear-hover-color: var(--my-hover-color); // 表单组件删除按钮hover色
--el-text-color-placeholder: var(--my-placeholder-color); // 表单组件placeholder
--el-bg-color-overlay: var(--my-select-bgc); // 表单组件背景色
--el-text-color-regular: #fff; // 表单组件文字颜色
// --el-input-text-color: red;
// --el-text-color-disabled: #f1ff;
// --el-border-color: #f1ff;
--el-border-color-light: var(--my-btn-border-color);
--el-mask-color: rgba(34, 54, 72, 0.9); // 主背景0.9透明度
--el-text-color-secondary: #fff; // 表头文本色
--el-border-color-lighter: var(--my-btn-border-color); // 时间选择器周边框
// --el-border-color-extra-light: #f1ff;
// --el-border-color-dark: #f1ff;
// --el-border-color-darker: #f1ff;
// --el-fill-color: #f1ff;
// --el-fill-color-light: #f1ff;
--el-fill-color-lighter: var(--my-table-light-color); // 表格斑马线
// --el-fill-color-extra-light: #f1ff;
// --el-fill-color-dark: #f1ff;
// --el-fill-color-darker: #f1ff;
// --el-fill-color-blank: #f1ff;
// --el-box-shadow: "0px 12px 32px 4px rgba(0, 0, 0, 0.04), 0px 8px 20px rgba(0, 0, 0, 0.08)";
--el-box-shadow-light: "0px 0px 12px rgba(0, 0, 0, 0.12)";
// --el-box-shadow-lighter: "0px 0px 6px rgba(0, 0, 0, 0.12)";
// --el-box-shadow-dark: "0px 16px 48px 16px rgba(0, 0, 0, 0.08), 0px 12px 32px rgba(0, 0, 0, 0.12), 0px 8px 16px -8px rgba(0, 0, 0, 0.16)";
// --el-disabled-bg-color: "var(--el-fill-color-light)";
// --el-disabled-text-color: "var(--el-text-color-placeholder)";
// --el-disabled-border-color: "var(--el-border-color-light)";
// --el-overlay-color: "rgba(0, 0, 0, 0.8)";
// --el-overlay-color-light: "rgba(0, 0, 0, 0.7)";
// --el-overlay-color-lighter: "rgba(0, 0, 0, 0.5)";
// --el-mask-color: "rgba(255, 255, 255, 0.9)";
// --el-mask-color-extra-light: "rgba(255, 255, 255, 0.3)";
// --el-border-width: "1px";
// --el-border-style: "solid";
// --el-border-color-hover: "var(--el-text-color-disabled)";
// --el-border: "var(--el-border-width) var(--el-border-style) var(--el-border-color)";
// --el-svg-monochrome-grey: "var(--el-border-color)";
}
7.src/style/reset-vxetable.scss默认vxetable的主题色
javascript
// 修改样式变量
$vxe-font-size: 14px;
$vxe-font-color: #666;
$vxe-ui-font-primary-color: #007d7b;
$vxe-ui-font-primary-color-light: #007d7b50;
$vxe-table-font-color: $vxe-font-color;
$vxe-table-border-color: #e8eaec;
$vxe-table-border-radius: 7px;
$vxe-table-header-background-color: #f9fcfc;
$vxe-table-row-striped-background-color: #007d7b07;
$vxe-ui-font-primary-color: #007d7b;
@import "vxe-table/styles/index.scss"; // 结合上方修改vxe-table样式变量
.vxe-cell {
.el-button {
font-size: var(--el-font-size-small);
}
}
// 灰色类名 设置rowClassName
// 表头
.header-cell-class-name-gray {
background-color: #f8f8f9 !important;
.vxe-cell--title {
color: #333333;
font-size: 14px;
}
}
// 表格斑马色
.row-class-name-gray:nth-child(2n + 1) {
background-color: #ffffff !important;
}
.row-class-name-gray:nth-child(2n) {
background-color: #fafafa !important;
}
// 表格hover
.row-class-name-gray:hover {
background-color: #f1fbfb !important;
}
// 表格文本颜色
.row-class-name-gray {
.vxe-cell--label {
color: #333333;
font-size: 14px;
}
}
// hover样式
.row--hover {
background: rgba(0, 157, 133, 0.1) !important;
}
// 公共表格link样式
.my-link {
color: $vxe-ui-font-primary-color !important;
cursor: pointer;
}
// 有弹框的数字link样式
.num-link {
color: $vxe-ui-font-primary-color !important;
cursor: pointer;
text-decoration: underline;
}
.vxe-table--header {
margin: 0;
// colgroup {
// col {
// width: auto !important;
// }
// }
}
.vxe-cell {
.is--disabled {
.vxe-table-icon-checkbox-unchecked:before {
background-color: #f3f6f9;
}
}
}
// 工具按钮背景色
.vxe-toolbar-custom-target {
background: #007d7b !important;
i {
color: #fff;
}
}
.vxe-table-icon-custom-column:before {
// content: ;
}
:root {
--vxe-ui-font-color: #606266;
--vxe-ui-font-primary-color: #007d7b !important;
--vxe-ui-font-primary-lighten-color: #007d7b !important;
--vxe-ui-font-primary-darken-color: #007d7b !important;
}
.vxe-footer--row {
background-color: #f0f8f8;
}
// 报表管理的通用表头
.group_table {
thead {
tr:first-child {
height: 54px;
.vxe-cell--title {
// color: red;
font-size: 16px;
}
}
}
}
.vxe-table .vxe-sort--asc-btn:hover,
.vxe-table .vxe-sort--desc-btn:hover {
color: var(--my-hover-color) !important;
}
8.src/style/vxe-ui-dark.scss深色的vxetable主题色
javascript
html.dark {
// vxe-table
// --vxe-primary-color: #20496e ; // vxe的主题色
--vxe-ui-font-primary-color: var(--theme-color-primary) !important; // vxe主题颜色
// --vxe-ui-font-primary-tinge-color: #d4d5d7; // 活动颜色
--vxe-ui-status-success-color: var(--theme-color-success) !important;
--vxe-ui-status-info-color: var(--theme-color-info) !important;
--vxe-ui-status-warning-color: var(--theme-color-warning) !important;
--vxe-ui-status-error-color: var(--theme-color-danger) !important;
--vxe-ui-layout-background-color: var(--my-main-bgc) !important;
--vxe-ui-input-border-color: var(--my-btn-border-color) !important; // 多选
--vxe-ui-table-row-hover-background-color: var(--my-main-bgc) !important;
--vxe-ui-font-primary-lighten-color: var(--theme-color-primary) !important; // 松开颜色
--vxe-ui-font-primary-darken-color: var(--theme-color-primary) !important; // 按下颜色
--vxe-ui-font-primary-disabled-color: var(--my-btn-bgc) !important; // 工具栏禁用颜色-选中
--vxe-ui-font-disabled-color: var(--my-disabled-color) !important; // 工具栏禁用文本颜色-未选
--vxe-ui-input-disabled-color: var(--my-btn-disabled-bgc) !important; // 工具栏多选禁用颜色-未选
--vxe-ui-tooltip-dark-background-color: var(--theme-color-primary) !important; // tip背景色
--vxe-ui-table-column-icon-border-color: #fff !important; // 表格列排序图标边框颜色
// --vxe-ui-table-column-icon-background-color: var(--my-btn-disabled-bgc) !important; // 表格列排序图标背景颜色
// --vxe-ui-table-column-icon-color: var(--my-btn-disabled-bgc) !important; // 表格列排序图标颜色
// --vxe-ui-table-column-icon-hover-color: var(--my-hover-color) !important; // 表格列排序图标hover颜色
--vxe-ui-table-header-background-color: var(--my-btn-bgc); // 表格头背景
--vxe-ui-table-row-striped-background-color: var(--my-table-light-color); // 表格行背景
--vxe-ui-font-color: #ffffff; // 表格字体颜
.vxe-toolbar-custom-target {
background-color: var(--theme-color-primary) !important;
}
.row--hover {
background: var(--my-btn-bgc) !important;
}
.vxe-cell .is--disabled .vxe-table-icon-checkbox-unchecked:before {
background-color: var(--my-btn-disabled-bgc) !important; // 列表多选框禁用
}
.vxe-header--column .vxe-resizable.is--line:before {
background-color: var(--my-select-bgc); // 表格列拖拽线
}
.vxe-footer--row {
background-color: var(--my-btn-bgc);
}
}
9.src/style/base.scss 基础样式
javascript
body,
button,
input,
select,
textarea {
font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei", "Hiragino Sans GB", "Heiti SC", "WenQuanYi Micro Hei", sans-serif;
color: #333;
}
body {
font-size: 14px;
line-height: 1.5;
}
body,
h1,
h2,
h3,
h4,
h5,
h6,
dl,
dt,
dd,
ul,
ol,
li,
th,
td,
p,
blockquote,
pre,
form,
fieldset,
legend,
input,
button,
textarea,
article,
aside,
footer,
header,
hgroup,
nav,
section,
menu {
margin: 0;
padding: 0;
// -webkit-text-size-adjust: 100%;
// -moz-osx-font-smoothing: grayscale;
// -webkit-font-smoothing: antialiased;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
em,
i {
font-style: normal;
}
li {
list-style: none;
}
img {
border: none;
user-select: none;
}
input,
img {
vertical-align: middle;
}
a,
input,
textarea {
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
outline: none;
// -webkit-font-smoothing: antialiased;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none !important;
appearance: none;
margin: 0;
}
article,
aside,
footer,
header,
hgroup,
nav,
section {
display: block;
}
a,
a:hover,
a:focus {
text-decoration: none;
}
.card-body {
flex: 1 0 0 !important;
}
.flex {
flex: 1 0 0;
}
.search-area {
.el-input {
width: 180px;
}
.el-select {
width: 180px;
}
}
10.src/style/setting.scss通用类名
javascript
.scroll {
overflow: hidden;
overflow-y: auto !important;
}
.page-view {
height: 100%;
width: 100%;
// overflow: hidden;
}
.wbg {
background: var(--my-main-bgc, #fff);
}
.pall {
padding: 16px 16px;
}
.pr {
padding-right: 16px;
}
.pl {
padding-left: 16px;
}
.pt {
padding-top: 16px;
}
.pb {
padding-bottom: 16px;
}
.mr {
margin-right: 16px;
}
.ml {
margin-left: 16px;
}
.mt {
margin-top: 16px;
}
.mb {
margin-bottom: 16px;
}
.m0 {
margin: 0;
}
.ball {
border: 1px solid #e9e9e9;
}
.bt {
border-top: 1px solid #e9e9e9;
}
.bb {
border-bottom: 1px solid #e9e9e9;
}
.bl {
border-left: 1px solid #e9e9e9;
&-green {
// border-left: 4px solid @primary-color !important;
}
&-red {
// border-left: 4px solid @error-color !important;
}
}
.br {
border-right: 1px solid #e9e9e9;
}
.radius {
// border-radius: @border-radius-base;
}
.flex-between {
display: flex;
justify-content: space-between;
align-items: center;
}
.flex-around {
display: flex;
justify-content: space-around;
align-items: center;
}
.flex-center {
display: flex;
justify-content: center;
align-items: center;
}
.flex-start {
display: flex;
justify-content: flex-start;
align-items: center;
}
.flex-end {
display: flex;
justify-content: flex-end;
}
.flex-column {
display: flex;
flex-direction: column;
}
.flex-row {
display: flex;
flex-direction: row;
}
.align-center {
align-items: center !important;
}
.align-end {
align-items: flex-end !important;
}
.align-top {
align-items: flex-start !important;
}
.text-center {
text-align: center;
}
.flex {
flex: 1;
position: relative;
}
.flex-wrap {
flex-wrap: wrap;
}
.flex-shrink {
flex-shrink: 0;
}
.grid {
display: grid;
}
.relative {
position: relative;
}
.absolute {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
// 标题 有标志
.basic-title {
font-size: 16px;
// font-weight: 500;
color: var(--my-333-color);
position: relative;
padding-left: 16px;
margin: 12px 0;
display: flex;
justify-content: space-between;
align-items: center;
&::before {
content: " ";
display: block;
width: 4px;
height: 16px;
background: var(--my-primary-checkout);
position: absolute;
left: 0;
top: 50%;
margin-top: -8px;
}
}
// 无标志
.basic-title-no-color {
font-size: 14px;
color: #333;
font-weight: 500;
position: relative;
margin: 12px 0;
display: flex;
justify-content: space-between;
}
// 省略号
.ellipsis {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
}
.ellipsis-2 {
display: -webkit-box; /* 老版本语法 */
-webkit-box-orient: vertical; /* 排列方向 */
-webkit-line-clamp: 2; /* 限制行数 */
overflow: hidden; /* 隐藏溢出 */
text-overflow: ellipsis; /* 省略符号 */
word-break: break-all; /* 允许单词断行 */
/* 新版语法(推荐) */
display: -webkit-box;
line-clamp: 2;
box-orient: vertical;
}
// 自动换行
.word-wrap {
word-wrap: break-word;
white-space: pre-wrap;
word-break: break-all;
.cell {
word-wrap: break-word;
white-space: pre-wrap;
}
}
// 禁止换行
.nowrap {
white-space: nowrap;
}
// 光标 手
.cursor {
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.overflow {
overflow: hidden;
}
.required {
white-space: nowrap;
// position: relative;
&::before {
content: "*";
font-size: 14px;
// color: red;
// position: absolute;
// top: 50%;
// margin-top: -7px;
// left: -12px;
display: inline-block;
margin-right: 4px;
color: #f5222d;
font-family: SimSun, sans-serif;
line-height: 1;
}
}
// 空状态
.isEmpty {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
// table上的搜索条件
.search-item {
display: flex;
align-items: center;
justify-content: flex-start;
flex-wrap: nowrap;
&-title {
height: 32px;
white-space: nowrap;
line-height: 32px;
margin-right: 10px;
}
}
// 没有padding的 弹窗、card
.no-padding {
.ant-modal-body {
padding: 0 !important;
}
.ant-card-body {
padding: 0 !important;
}
}
// 有标题 但是标题下边没有边框的card
.no-border-card {
.ant-card-head {
border: none;
&-title {
padding: 12px 0 !important;
font-weight: 500;
font-size: 15px;
}
}
.ant-card-body {
padding: 0 16px 12px !important;
}
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.09);
// border-radius: @border-radius-base;
}
.no-content-tab {
height: auto !important;
.ant-tabs-content {
height: 0px;
display: none !important;
}
}
.click-right-card {
position: relative;
.ant-card-head {
position: absolute;
left: 0;
right: 0;
}
.ant-card-body {
padding: 12px 16px !important;
}
}
// 通用阴影
.shadow {
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.09);
}
// 通用鼠标滑过阴影效果
.hover {
&:hover {
transition: 0.3s;
box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.09);
}
}
// 编辑、删除按钮hover
.view-change-btn-class:hover {
color: #168a84 !important;
}
.delete-btn-class {
color: red;
cursor: pointer;
}
.delete-btn-class:hover {
opacity: 0.7 !important;
}
.btn-primary-hover:hover {
background-color: #e8f3f3 !important;
}
.el-space {
gap: 0 !important;
.el-input {
width: 180px;
}
.el-select {
width: 180px;
}
&__item {
margin-right: 16px;
&:last-child {
margin: 0 !important;
}
}
}
.jg-message-box {
padding: 24px 32px !important;
.el-message-box__header {
padding-top: 8px !important;
padding-left: 38px !important;
color: #333;
font-weight: 500;
}
.el-message-box__title {
font-size: var(--el-font-size-medium);
}
.el-message-box__close {
display: none;
}
.el-message-box__status {
position: absolute;
top: -36px;
&.el-icon {
font-size: 24px;
}
}
.el-message-box__message {
padding-left: 38px;
}
.el-message-box__btns {
padding-top: 16px;
}
}
.pl0 {
padding-left: 0 !important;
}
.pr0 {
padding-right: 0 !important;
}
.pt0 {
padding-top: 0 !important;
}
.pb0 {
padding-bottom: 0 !important;
}
.pall0 {
padding: 0 !important;
}
// 光标 手
.cursor_ {
cursor: pointer;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
text-decoration: underline;
}
.green {
color: var(--my-link-color3);
}
.bs {
box-sizing: border-box;
}
@keyframes highlight-scale {
0% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
100% {
transform: scale(1);
}
}
11.src/style/variable.scss通用变量
javascript
$primary-color: #007d7b; // 全局主色
$primary-color-10: #007d7b10; // 全局主色
$primary-color-20: #007d7b20; // 全局主色
$primary-color-50: #007d7b50; // 全局主色
$primary-color-80: #007d7b50; // 全局主色
$link-color: #007d7b; // 链接色
$success-color: rgba(139, 195, 74, 1); // 成功色
$bgc-blue: rgba(43, 128, 185, 1); //背景色-蓝色
$bgc-blue-5: rgba(43, 128, 185, 0.05); // 背景色-蓝色
$bgc-green: rgba(59, 181, 160, 1); // 背景色-绿色
$bgc-green-5: rgba(59, 181, 160, 0.05); // 背景色-绿色
$bgc-yellow-green: rgba(96, 200, 137, 1); // 背景色-草绿色
$bgc-yellow: rgba(241, 196, 14, 1); // 背景色-黄色
$bgc-yellow-5: rgba(241, 196, 14, 0.05); // 警告色
$bgc-yellow-green-5: rgba(96, 200, 137, 0.05); // 背景色-草绿色
$warning-color: #ffc107; // 警告色
$error-color: #ff5722; // 错误色
$font-size-base: 14px; // 主字号
$heading-color: rgba(0, 0, 0, 0.85); // 标题色
$text-color: rgba(0, 0, 0, 0.65); // 主文本色
$text-color-secondary: rgba(0, 0, 0, 0.45); // 次文本色
$disabled-color: rgba(0, 0, 0, 0.25); // 失效色
$border-radius-base: 7px; // 组件/浮层圆角
$border-color-base: #d9d9d9; // 边框色
$box-shadow-base: 0 2px 8px rgba(0, 0, 0, 0.15); // 浮层阴影
// 边距相关啊
$space-size: 16px;
12.src/style/yan-page.scss 页面样式
javascript
@use "./variable.scss" as *;
.container {
flex: 1;
background: var(--my-main-bgc, #fff);
box-sizing: border-box;
padding: $space-size;
overflow: hidden;
.title-box {
height: 14px;
font-weight: 700;
font-size: 14px;
color: #333;
user-select: none;
margin-bottom: $space-size;
}
.action-box {
display: flex;
justify-content: space-between;
align-items: flex-end;
.el-form {
flex-shrink: unset;
.el-form-item {
min-width: 200px;
margin-right: 16px;
margin-bottom: $space-size;
.el-select {
width: 100% !important;
}
&:last-child {
// min-width: 132px;
margin-right: 0;
}
}
}
.el-dropdown {
flex-shrink: 0;
}
.button-group {
flex-shrink: 0;
margin-bottom: $space-size;
}
}
.table-box {
flex: 1;
box-sizing: border-box;
margin-bottom: $space-size;
overflow: hidden;
}
.pagination-box {
height: 32px;
}
}