vue3设置 element-plus 亮色 / 暗黑色切换

安装Element-plus:

# NPM
$ npm install element-plus --save

# Yarn
$ yarn add element-plus

# pnpm
$ pnpm install element-plus

在 mian.ts 中引入Element-plus:

main.ts 引入element-ui

import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'

const app = createApp(App)

app.use(ElementPlus)
app.mount('#app')

darkLight.vue子组件:

<template>
  <div>
    <el-switch
      v-model="theme"
      inline-prompt
      :active-icon="Sunny"
      :inactive-icon="Moon"
      style="--el-switch-on-color: #ff0000; --el-switch-off-color: #409eff"
      @change="toggleDark()"
    />
  </div>
</template>
<script setup lang="ts">
import { ref, watch } from "vue";
import { Moon, Sunny } from "@element-plus/icons-vue";
import { useDark, useToggle, useStorage } from "@vueuse/core";
const isDark = ref(useDark());
const toggleDark = useToggle(isDark);
// 切换按钮 localStorage 中的值,保证刷新不重置
const vueuseColorScheme = useStorage("vueuse-color-scheme", null);
const theme = vueuseColorScheme.value === "auto" ? ref(false) : ref(true);
watch(
  theme,
  (newVal, oldVal) => {
    console.log(newVal);
    if (newVal) {
      window.document.documentElement.setAttribute("data-theme", "light");
    } else {
      window.document.documentElement.setAttribute("data-theme", "dark");
    }
  },
  {
    immediate: true,
  }
);
</script>

index.vue

<template>
    <div>
        <darkLight />
        <!-- 测试用 -->
        <el-card class="box-card">
            <template #header>
                <div class="card-header">
                    <span>Card name</span>
                </div>
            </template>
        </el-card>
    </div>
</template>
<script setup lang='ts'>
    import darkLight from '@/components/darkLight.vue'
</script>

base.css

或者全局搜索 :root 在后面加修饰,white代表亮色,dark代表暗黑色,加对应的修饰即可

/* semantic color variables for this project */
:root[data-theme=ligth] {
  --color-background: var(--vt-c-white);
}

@media (prefers-color-scheme: dark) {
  :root[data-theme=dark] {
    --color-background: var(--vt-c-black);
  }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值