通过在 classList 在 html 添加 dark 类触发原生开启 dark 主题
/* 深色模式 */
.dark {
color-scheme: dark;
}
function addDark() {
const classList = document.documentElement.classList
classList.add('dark')
localStorage.setItem(DARK_KEY, 'true')
}
function removeDark() {
const classList = document.documentElement.classList
classList.remove('dark')
localStorage.setItem(DARK_KEY, 'false')
}
可以在 localStorage 中存并监听 storage 事件同步 tab 页
function initDark() {
const init = () => {
// 读取storage状态初始化
if (localStorage.getItem(DARK_KEY) === 'true') {
const classList = document.documentElement.classList
classList.add('dark')
}
}
// 监听storage改变同步tab页
window.addEventListener('storage', init)
}
通过媒体查询修改原生 dark 主题的样式
@media (prefers-color-scheme: dark) {
body {
color-scheme: dark;
background-color: #333; /* 可以设置背景色为深色 */
color: #fff; /* 可以设置文字颜色为浅色 */
}
}