浏览代码

feat: Added support for tailwindcss night mode mechanism (#998)

* feat: 新增支持 tailwindcss 的夜间模式支持

(cherry picked from commit 1de8704b61c38c92bc6877d0bec9e6f67766b3c8)

* docs: update changelog
周旭 3 年之前
父节点
当前提交
189bc6feb3
共有 3 个文件被更改,包括 15 次插入3 次删除
  1. 1 0
      CHANGELOG.zh_CN.md
  2. 13 2
      src/logics/theme/dark.ts
  3. 1 1
      tailwind.config.js

+ 1 - 0
CHANGELOG.zh_CN.md

@@ -1,6 +1,7 @@
 ### ✨ Features
 
 - **Preview** 添加新的属性及事件
+- **Dark Theme** 新增对 tailwindcss 夜间模式的支持
 
 ### 🐛 Bug Fixes
 

+ 13 - 2
src/logics/theme/dark.ts

@@ -1,13 +1,24 @@
 import { darkCssIsReady, loadDarkThemeCss } from 'vite-plugin-theme/es/client';
+import { addClass, hasClass, removeClass } from '/@/utils/domUtils';
 
 export async function updateDarkTheme(mode: string | null = 'light') {
   const htmlRoot = document.getElementById('htmlRoot');
+  if (!htmlRoot) {
+    return;
+  }
+  const hasDarkClass = hasClass(htmlRoot, 'dark');
   if (mode === 'dark') {
     if (import.meta.env.PROD && !darkCssIsReady) {
       await loadDarkThemeCss();
     }
-    htmlRoot?.setAttribute('data-theme', 'dark');
+    htmlRoot.setAttribute('data-theme', 'dark');
+    if (!hasDarkClass) {
+      addClass(htmlRoot, 'dark');
+    }
   } else {
-    htmlRoot?.setAttribute('data-theme', 'light');
+    htmlRoot.setAttribute('data-theme', 'light');
+    if (hasDarkClass) {
+      removeClass(htmlRoot, 'dark');
+    }
   }
 }

+ 1 - 1
tailwind.config.js

@@ -1,6 +1,6 @@
 module.exports = {
   mode: 'jit',
-  // darkMode: 'class',
+  darkMode: 'class',
   plugins: [createEnterPlugin()],
   purge: {
     enable: process.env.NODE_ENV === 'production',