使用 Tailwind CSS 和 CSS 变量实现暗黑模式和夜间模式
暗黑模式和夜间模式是现代网站的必备功能。它们提高了可访问性,并让用户可以灵活地选择自己喜欢的外观。让我们深入了解如何使用 Tailwind CSS 和 CSS 变量构建此功能。
为什么 Tailwind CSS 和 CSS 变量效果如此好
使用 CSS 变量设置主题颜色
首先定义主题的颜色。这些 CSS 变量将位于父类中,以便于切换主题。
/* Light Theme (Default) */ :root { --bg-color: #ffffff; --text-color: #000000; } /* Dark Theme */ .theme-dark { --bg-color: #000000; --text-color: #ffffff; } /* Solarized Theme */ .theme-solarized { --bg-color: #002b36; --text-color: #839496; }
在 Tailwind 类中使用 CSS 变量
Tailwind 可以轻松使用 CSS 变量进行样式设置。
Dark Mode Demo
添加 JavaScript 以实现动态主题切换
以下是动态处理主题变化的 JavaScript:
const themeSelect = document.getElementById("theme-select"); const rootElement = document.documentElement; // Listen for dropdown changes themeSelect.addEventListener("change", (event) => { const selectedTheme = event.target.value; // Remove all theme classes rootElement.classList.remove("theme-light", "theme-dark", "theme-solarized"); // Add the selected theme class rootElement.classList.add(selectedTheme); }); // Set default theme on load window.addEventListener("DOMContentLoaded", () => { rootElement.classList.add("theme-light"); });
**实时主题切换**
当用户从下拉菜单中选择一个主题时,背景和文本颜色会立即改变。这种动态更新使体验变得无缝且具有交互性。
**为什么这种方法很棒**
使用 LocalStorage 保存主题偏好设置
通过保存所选主题使其在各个会话中持续存在,从而将其提升一个档次。
// Save the theme themeSelect.addEventListener("change", (event) => { const selectedTheme = event.target.value; rootElement.classList.remove("theme-light", "theme-dark", "theme-solarized"); rootElement.classList.add(selectedTheme); localStorage.setItem("theme", selectedTheme); }); // Load the saved theme window.addEventListener("DOMContentLoaded", () => { const savedTheme = localStorage.getItem("theme") || "theme-light"; rootElement.classList.add(savedTheme); });
**暗黑模式和夜间模式的额外提示**
使用 Tailwind CSS 和 CSS 变量,创建动态暗模式或夜间模式既简单又高效。尝试一下,看看它如何改变您网站的用户体验!