在CSS中实现暗模式可以通过多种方式完成,这主要取决于你希望暗模式如何触发:自动基于用户系统偏好,或是通过网站上的一个开关手动切换。以下是两种实现暗模式的方法。
1. 自动暗模式(基于媒体查询)
CSS 提供了一个媒体查询 prefers-color-scheme,它可以检测用户系统的主题偏好(亮色或暗色)。如果你想让网站自动匹配用户的系统偏好,可以使用此方法。
示例代码
/* 默认的亮色主题样式 */
body {
background-color: #fff;
color: #333;
}
/* 暗色主题样式 */
@media (prefers-color-scheme: dark) {
body {
background-color: #333;
color: #fff;
}
a {
color: #1a73e8;
}
}
在这个示例中,当用户设备设置为暗模式时,网站背景将变为深色,文字变为白色。
2. 手动切换暗模式(通过 JavaScript 和 CSS 变量)
如果你想在网站上提供一个切换暗模式的按钮,可以使用 JavaScript 来动态更改 CSS 变量,并利用这些变量在 CSS 中定义颜色。
HTML 结构
<button id="theme-toggle">Toggle Dark Mode</button>
CSS 使用自定义属性
:root {
--background-color: #fff;
--text-color: #333;
}
body {
background-color: var(--background-color);
color: var(--text-color);
}
.dark-mode {
--background-color: #333;
--text-color: #fff;
}
JavaScript 切换类
javascript
Copy code
document.getElementById('theme-toggle').addEventListener('click', function() {
document.body.classList.toggle('dark-mode');
});
在这个示例中,当用户点击切换按钮时,body 元素的类会切换,从而切换定义在 CSS 变量中的颜色,实现亮色和暗色主题的转换。
3. 存储用户偏好
为了保持用户的主题选择跨会话一致,可以使用 localStorage 在浏览器中存储用户的偏好。
const themeToggleButton = document.getElementById('theme-toggle');
// 检查存储的主题偏好
function loadTheme() {
const storedTheme = localStorage.getItem('theme');
if (storedTheme) {
document.body.classList.add(storedTheme);
}
}
// 切换主题并存储偏好
themeToggleButton.addEventListener('click', function() {
const isDarkMode = document.body.classList.toggle('dark-mode');
localStorage.setItem('theme', isDarkMode ? 'dark-mode' : 'light-mode');
});
// 在页面加载时应用存储的主题
window.onload = loadTheme;
这段代码在用户切换主题时将其偏好保存到 localStorage,并在页面加载时应用这些偏好设置。
通过这些方法,你可以灵活地为网站添加暗模式支持,无论是自动匹配系统设置还是允许用户手动切换主题。
版权属于:泽泽社长
本文链接:https://blog.zezeshe.com/archives/how-to-implement-dark-mode-in-css.html
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!