You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现站点明暗模式本地存储时localStorage应放置在代码的什么位置?

你的整体实现思路没有问题,只需要补充两处localStorage相关逻辑即可实现状态持久化:

  • 主题切换时把最新状态写入localStorage存储
  • 页面初始化时读取存储的状态,同步页面主题和开关的选中状态

修改后的完整代码如下:

const checkbox = document.getElementById('checkbox');

// 页面初始化阶段读取本地存储的主题配置
const savedTheme = localStorage.getItem('siteTheme');
// 有存储的配置就直接应用,没有的话默认用亮色模式
if (savedTheme === 'dark') {
  document.body.classList.add('dark');
  checkbox.checked = true;
}

checkbox.addEventListener('change',()=> {
  // 切换主题类,返回值表示当前是否为暗色模式
  const isDark = document.body.classList.toggle('dark');
  // 把最新状态存入localStorage
  localStorage.setItem('siteTheme', isDark ? 'dark' : 'light');
});

如果需要在用户没有手动切换过主题时,默认匹配系统的暗色模式偏好,可以把初始化逻辑调整为:

const savedTheme = localStorage.getItem('siteTheme');
const prefersSystemDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
if (savedTheme === 'dark' || (!savedTheme && prefersSystemDark)) {
  document.body.classList.add('dark');
  checkbox.checked = true;
}

内容的提问来源于stack exchange,提问作者Renaldo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:45:08