GitHub Demo 地址
在线预览
Element Plus
2.2.0 版本开始支持暗黑模式,启用方式参考 Element Plus 官方文档 - 暗黑模式
demo通过Element Plus
和VueUse
的 useDark 方法实现具有自动数据持久性的响应式暗黑模式。
安装
npm install element-plus --save
npm install @vueuse/core --save
配置
在main.ts
导入下面一行代码就会支持暗黑模式
// main.ts
import 'element-plus/theme-chalk/dark/css-vars.css'
然后通过VueUse
的 useDark 方法切换暗黑模式
<template><el-switch v-model="isDark" inline-prompt :active-icon="IconEpMoon" :inactive-icon="IconEpSunny" active-color="var(--el-fill-color-dark)" inactive-color="var(--el-color-primary)" @change="toggleDark" /></template><script setup lang="ts">import IconEpSunny from '~icons/ep/sunny';
import IconEpMoon from '~icons/ep/moon';const isDark = useDark()
const toggleDark = () => useToggle(isDark)</script>
自定义全局使用的暗黑模式颜色
有时需要自定义一些可全局使用的颜色,并且支持暗黑模式
可在import 'element-plus/theme-chalk/dark/css-vars.css'
之后导入一个自定义的style文件,如base.scss
,
然后在内部实现自定义的颜色
:root {--bPageBgColor: #f5f5f5;--bTextColor: #000;--bBgColor: var(--el-bg-color);--bBorderColor: var(--el-input-border-color);--bDialogBgColor: var(--el-dialog-bg-color);// single page use--roleHeaderBgColor: #f1f1f1;--selectRowBgColor: #e8f4ff;
}html.dark {--bPageBgColor: #0a0a0a;--bTextColor: #fff;// --el-bg-color-page: #0a0a0a;// --el-bg-color: #141414;// single page use--roleHeaderBgColor: #0e0e0e;--selectRowBgColor: #414243;
}
然后在页面的css中使用设置的自定义颜色
color: var(--bTextColor);