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>
热门推荐
牙齿矫正过程中的疼痛是否意味着矫正效果较好?医生的专业提示
标准身高、体重对照表,生长曲线,体重指数(BMI),骨龄与生长潜力
儿童bmi指数标准范围
学完一门编程语言后如何提高
股票量比:股票上的量比是什么意思?
为什么域名必须进行ICP备案?
智慧园区系统之间的兼容性怎么样?
潮汕单丛茶冲泡技巧解析:掌握难点,品味地道茶香
采购流程详解:从需求确定到付款处理
缓解疲劳,这5种食物很管用
CHRIST冻干机操作步骤详解:从启动到维护的全面指南
同样是春分,上海和新疆的气候差别有多大?“气象文化绘四季” 二十四节气进社区
比特币熊市策略:如何做空比特币等加密货币?利弊分析及风险回报
教育部发文!2024年世界职业院校技能大赛开始报名
俄罗斯护卫舰,借鉴054A型,迟迟难产,印度为何成功捡漏?
芯片先进封装硅通孔(TSV)技术说明
个人隐私权的界限:如何平衡保护与合理利用
氯沙坦钾对尿酸的影响
图书证与借书卡:探究两种借阅方式的利弊
这个中部大省,也要“投靠”长三角
电动摩托车上牌标准及牌照颜色分类详解
文本解读|虚实相生见繁华——读柳永《望海潮(东南形胜)》
青海西宁:技术赋能“慧”农更惠农
数字技术助力民俗文化“逆龄生长”,打造民俗传播和体验新方式
黄永玉字画作品拍卖记录大揭秘:艺术珍品价值连城
黄永玉字画作品拍卖记录大揭秘:艺术珍品价值连城
卫瓘之女的命运:一段传奇的反思
PS用魔棒工具抠图技巧详解:快速入门与实践指南
电子烟的未来趋势与健康风险分析
碳酸钠遇上盐酸:一场化学反应的奇妙旅程