这两天想要在elementPlus的基础上,做一个比较炫酷的黑色主题框架,但是暂时还没有一个好的设计,所以先调了个深色模式出来试试水。
我用的是官网推荐的方法,详情可以查看主题 | Element Plus (gitee.io),具体的实现方法如下:
环境确认
为了不出错,保证能够一次就设置成功,需要确认一下项目框架,版本号只要不过高或过低,一般都不会出问题
"vite": "^2.9.0",
"sass": "^1.49.11",
"typescript": "^4.5.4",
"vue": "^3.2.25",
"element-plus": "^2.1.7",
创建主题文件
在项目目录的/src/assets/下创建elementPlusDark.scss、custom.scss两个文件。elementPlusDark.scss用来替换elemengPlus中的变量,custom.scss用来替换elementPlus中写死的部分样式,文件内容具体如下:
elementPlusDark.scss
// 夜间模式
$--colors: (
'white': #1C1C1E,
'black': #FFF,
'primary': (
'base': #0A84FF,
),
'success': (
'base': #32D74B,
),
'warning': (
'base': #FFD60A,
),
'danger': (
'base': #FF9F0A,
),
'error': (
'base': #FF453A,
),
'info': (
'base': #909399,
),
);
$--text-color:(
('primary': #FFF,
'regular': #EBEBF0,
'secondary': #BCBCC0,
'placeholder': #AEAEB2,
'disabled': #8E8E93,
)
);
$--border-color:(
(
'': #404042,
'light': #2C2C2E,
'lighter': #3A3A3C,
'extra-light': #545456,
'dark': #7C7C80,
'darker': #AEAEB2,
)
);
$--fill-color:(
(
'': #242426,
'light': #242426,
'lighter': #242426,
'extra-light': #242426,
'dark': #363638,
'darker': #363638,
'blank': #363638,
)
);
$--bg-color:(
(
'': #1C1C1E,
'page': #1C1C1E,
'overlay': #1C1C1E,
)
);
$--mask-color:(
(
'': rgba(0, 0, 0, 0.8),
'extra-light': rgba(255, 255, 255, 0.3),
)
);
@forward "element-plus/theme-chalk/src/common/var.scss" with
(
$colors: $--colors,
$text-color : $--text-color,
$border-color:$--border-color,
$fill-color:$--fill-color,
$bg-color:$--bg-color,
$mask-color:$--mask-color,
);
@use "element-plus/theme-chalk/src/index.scss" as *;
custom.scss
body {
margin: 0;
background-color: #1C1C1E;
color: #fff;
}
.el-calendar{
background-color: #1C1C1E;
}
.el-menu--horizontal > .el-sub-menu .el-sub-menu__title:hover{
background-color: #1a2635;
}
vite.config.ts中引入elementPlusDarkj.scss
在配置文件中的css→preprocessorOptions→scss→additionalData中将elementPlusDarkj.scss进行引入。
这里的@是配置的别名,没有配的可以引相对路径
在main.ts中引入custom.scss
到这里,重新运行一下就可以看到效果了,启动时可能会比以前要慢一点,这是因为scss在对文件进行额外的编译,在正式环境中不会有性能的损失。