Element Plus 2.2.0 版本开始支持暗黑模式,启用方式参考 Element Plus 官方文档 - 暗黑模式, 官方也提供了示例 element-plus-vite-starter 模版 。
这里根据官方文档和示例讲述如何使用 VueUse 的 useDark 方法实现暗黑模式的动态切换。
# 1. 导入 Element Plus 暗黑模式变量
| // src/main.ts | |
| import 'element-plus/theme-chalk/dark/css-vars.css' | 
# 2. 切换暗黑模式设置
| <!-- src/layout/components/Settings/index.vue --> | |
| <script setup lang="ts"> | |
| import IconEpSunny from '~icons/ep/sunny'; | |
| import IconEpMoon from '~icons/ep/moon'; | |
| /** | |
| * 暗黑模式 | |
| */ | |
| const settingsStore = useSettingsStore(); | |
| const isDark = useDark(); | |
| const toggleDark = () => useToggle(isDark); | |
| </script> | |
| <template> | |
|   <div class="settings-container"> | |
| <h3 class="text-base font-bold">项目配置</h3> | |
| <el-divider>主题</el-divider> | |
|     <div class="flex justify-center" @click.stop> | |
|       <el-switch | |
| v-model="isDark" | |
| @change="toggleDark" | |
|         inline-prompt | |
| :active-icon="IconEpMoon" | |
| :inactive-icon="IconEpSunny" | |
| active-color="var(--el-fill-color-dark)" | |
| inactive-color="var(--el-color-primary)" | |
|       /> | |
|     </div> | |
|   </div> | |
| </template> | 
# 3. 自定义变量
除了 Element Plus 组件样式之外,应用中还有很多自定义的组件和样式,像这样的:

应对自定义组件样式实现暗黑模式步骤如下:
# 1. 新建 src/styles/dark.scss
| html.dark { | |
|   /* 修改自定义元素的样式 */    | |
| .navbar { | |
| background-color: #141414; | |
|   } | |
| } | 
# 2. 在 Element Plus 的样式之后导入它
| // main.ts | |
| import 'element-plus/theme-chalk/dark/css-vars.css' | |
| import '@/styles/dark.scss' | 
