Admin 项目实战(九):暗色夜间模式
这是 Admin 练习项目的第九篇,练习如何使用 vueuse + unocss 实现夜间模式。
效果
点击模式切换图标,在普通模式与夜间模式进行切换。
实现夜间模式
安装插件与图标
| pnpm i @vueuse/core @vueuse/head
pnpm i -D @iconify/json
|
配置 Vite 与插件
配置 Vite 导出 vueuse API
增加 vueuse 插件,通过 autoimport 实现自动导入:
| // vite.config.ts
export default defineConfig({
//...
plugins: [
AutoImport({
imports: [
"vue",
"vue-router",
"pinia",
"vue-i18n",
"@vueuse/core",
"@vueuse/head",
],
dts: "src/auto-imports.d.ts",
dirs: ["src/composables"],
vueTemplate: true,
}),
],
//...
});
|
在 Vite 导出时,配置 dirs
参数,对 composables 下的组件自动导出。同时设置 vueTemplate
支持 template。
增加 dark API
为 composite API 新建目录 composables
,增加 dark 组件:
| // src\composables\dark.ts
export const isDark = useDark();
export const toggleDark = useToggle(isDark);
|
实现 Dark 组件
实现 Dark 组件的原理,是之前引入的原子样式中,已提供了 dark 样式。这里通过按钮调用插件进行切换:
- 点击事件调用 toggleDark 函数,实现模式切换
- 为按钮图标增加 dark 样式,使用 sun, moon 图标代表不同模式
| <!--src\components\Dark.vue-->
<template>
<button class="mx-2 !outline-none text-2xl" @click="toggleDark()">
<div class="i-carbon-sun dark:i-carbon-moon"></div>
</button>
</template>
<script lang="ts">
export default {};
</script>
<style lang=""></style>
|
支持夜间模式切换
在导航栏组件 Navbar 中加入夜间模式切换按钮:
| <!--src\components\Navbar.vue-->
<div class="flex items-center mt-4 md:mt-0">
<Dark></Dark>
<language></language>
|
启动项目,可以查看夜间模式切换效果。
上一课
Admin 项目实战(十):菜单自动配置
凡本网注明"来源:XXX "的文/图/视频等稿件,本网转载出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如涉及作品内容、版权和其它问题,请与本网联系,我们将在第一时间删除内容!
作者: 勃纳什
来源: https://zhuanlan.zhihu.com/p/645611386