Vue3 实战:切换白天黑夜(暗黑模式)组件封装
创作时间:
作者:
@小白创作中心
Vue3 实战:切换白天黑夜(暗黑模式)组件封装
引用
CSDN
1.
https://blog.csdn.net/weixin_41192489/article/details/143788859
效果预览
原理解析
- 切换为暗黑模式时,会在 html 标签上添加样式类
dark
- 导入 ElementPlus 的暗黑模式样式后, ElementPlus 组件会自动响应暗黑模式
- 自定义组件需用 UnoCSS 的
dark:
语法自定义暗黑模式的样式
代码实现
vue3 + vite + ElementPlus + UnoCSS
src/main.ts
// 导入 ElementPlus 暗黑模式的样式
import 'element-plus/theme-chalk/dark/css-vars.css'
组件封装
src/components/DarkMode.vue
<script setup lang="tsx">
const isDark = ref(false)
const Sunny = () => <div class="i-noto:sun w-1em h-1em"></div>
const Moon = () => <div class="i-icon-park:moon w-1em h-1em"></div>
function toggleMode(flag: boolean) {
if (flag) {
document.documentElement.classList.add('dark')
} else {
document.documentElement.classList.remove('dark')
}
}
watch(
[isDark],
() => {
nextTick(() => {
toggleMode(isDark.value)
})
},
{
immediate: true
}
)
</script>
<template>
<el-switch
style="--el-switch-on-color: #333"
v-model="isDark"
:active-action-icon="Moon"
:inactive-action-icon="Sunny"
>
</el-switch>
</template>
页面使用
<template>
<div class="p4">
<DarkMode />
<div>
<el-button>element plus 按钮</el-button>
</div>
<div class="bg-red dark:bg-white dark:color-red border w-10 mt-3">按钮</div>
</div>
</template>
热门推荐
钙果苗种植指南:从气候到土壤的全方位解析
如何优化家居生活的体验?这种优化需要从哪些方面着手?
细数申请美国绿卡的12种方法
美国移民:申请普通绿卡需要准备哪些基本证明材料
隔夜水、隔夜茶、隔夜菜、隔夜肉哪个不能吃?科学依据是什么?
中字头股票是什么意思,这类股票有哪些特点?
重磅研究:每天增加3份茶、蓝莓等富含类黄酮食物,全因死亡风险降低8%
室内植物达人必备:超实用绿植挑选指南!
化妆新手如何快速掌握化妆技巧与步骤?
抑郁症的表现及治疗方法
2025中国转移因子制剂行业发展研究报告:免疫调节药物市场迎来新增长极
形势发生了变化,青岛、郑州、西安谁是北方第二城?天津迎来挑战
敏感肌如何选择洗面奶?一文详解选购要点
空调使用技巧:清凉一夏,节能无忧
常有腰突烦恼?教您如何保护腰杆
销售怎么规划市场需求
臭豆腐的制作方法及配料详解
小说创作技巧:如何塑造鲜明角色形象
大分县温泉文化:别府与由布院的特色体验
脉搏怎么测
如何正确测量体温脉搏呼吸血压
老年骨折患者的药物治疗:你需要知道的关键知识!
氯雷他定冲上热搜!医生提醒:这种药不能随便乱吃
氯雷他定片适合长期服用吗?
正史中的武则天:治国颇有成效 重用酷吏
隔夜菜如何存储?
成功摧毁ATACMS导弹!俄军公开铠甲-SM防空系统,网友:连中国都没有这东西!
美陆战队接装MADIS 强化远征防空能力
业务新手必看:B2B与B2C业务差异与实战技巧
兼具高活性和高稳定性的多孔高熵合金OER催化剂