Skip to content

ElementPlus在最新的正式版已经完美支持暗黑模式了,但是在我们的项目中肯定会用到非ElementPlus官方提供的颜色,此时我们可以定义变量来适配ElementPlus实现全局暗黑模式。

首先在main.js引入ElementPlus暗黑模式样式

javascript
import 'element-plus/theme-chalk/dark/css-vars.css'

安装 vueuse

shell
npm i -D @vueuse/core

切换功能实现,svg-icon是图标,你也可以使用图标或者ElementPlus组件实现

vue
<template>
  <div v-bind="$attrs" @click.stop="toggleDark()">
    <svg-icon v-if="isDark" icon="light" />
    <svg-icon v-else icon="dark" />
  </div>
</template>

<script setup>
import { useDark, useToggle } from "@vueuse/core"

const isDark = useDark()
const toggleDark = useToggle(isDark)
</script>

自定义颜色

在项目开发中我们不可能全都使用ElementPlus组件,在自定义样式时就要考虑暗黑模式的是适配性问题了,创建文件:src/styles/element.scss

scss
:root {
  --bg-contrast: #ffffff;
  --text-top-color: #5a5e66; //顶部菜单按钮颜色
  --top-box-shadow: rgba(0, 21, 41, 0.08); //顶部菜单底边阴影
}

html.dark {
  --bg-contrast: #000000;
  --text-top-color: #c0c0c0;
  --top-box-shadow: rgba(225, 225, 225, 0.32);
}

main.js中导入

javascript
import "./styles/element.scss"

vue文件中通过 var(变量名称) 使用

vue
<style lang="scss" scoped>
    .right-menu-item {
        color: var(--text-top-color);
    }
</style>