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

如何让网站记住用户的深色模式(Dark Mode)选择?

实现深色模式跨页面记忆

核心思路

用localStorage保存用户的深色模式选择(它会在同域名下的所有页面共享,刷新/跳转后不会丢失),页面加载时读取保存的状态并自动应用。


步骤1:修改切换函数,保存状态

更新你的toggleDarkMode1函数,每次切换后把当前状态存入localStorage:

function toggleDarkMode1() {
  var element = document.body;
  element.classList.toggle("dark-mode");
  var test1 = document.getElementById("changeMe1");
  test1.classList.toggle("dark-mode");
  var test2 = document.getElementById("change2");
  test2.classList.toggle("dark-mode-header");
  var test3 = document.getElementById("changeMe3");
  test3.classList.toggle("dark-mode");

  // 保存当前深色模式状态到localStorage
  const isDarkMode = element.classList.contains('dark-mode');
  localStorage.setItem('darkModeEnabled', isDarkMode.toString());
}

步骤2:添加页面加载时的状态恢复逻辑

新增一个函数,在页面加载完成后自动读取保存的状态并应用,同时同步开关的勾选状态:

function applySavedDarkMode() {
  // 读取保存的状态,默认关闭深色模式
  const savedDarkMode = localStorage.getItem('darkModeEnabled') === 'true';
  const darkModeSwitch = document.getElementById('darkmode');

  if (savedDarkMode) {
    // 开启深色模式:添加对应的类
    document.body.classList.add('dark-mode');
    document.getElementById("changeMe1").classList.add('dark-mode');
    document.getElementById("change2").classList.add('dark-mode-header');
    document.getElementById("changeMe3").classList.add('dark-mode');
    // 同步开关为勾选状态
    darkModeSwitch.checked = true;
  } else {
    // 关闭深色模式:移除对应的类(确保默认状态正确)
    document.body.classList.remove('dark-mode');
    document.getElementById("changeMe1").classList.remove('dark-mode');
    document.getElementById("change2").classList.remove('dark-mode-header');
    document.getElementById("changeMe3").classList.remove('dark-mode');
    // 同步开关为未勾选状态
    darkModeSwitch.checked = false;
  }
}

// 页面元素加载完成后执行恢复操作
document.addEventListener('DOMContentLoaded', applySavedDarkMode);

步骤3:复用代码到所有页面

把上面两段JavaScript代码保存到一个单独的文件(比如darkMode.js),然后在你的3个页面的<head>或<body>末尾引入这个文件:

<script src="./path/to/darkMode.js"></script>

(注意替换path/to/为实际的文件路径,比如如果文件和页面在同一目录,就写./darkMode.js)


关键说明

  • localStorage是浏览器提供的本地存储,数据会永久保存(除非用户手动清除浏览器缓存),且同域名下的所有页面都能访问。
  • DOMContentLoaded事件确保页面所有元素加载完成后再执行状态恢复,避免出现找不到元素的错误。
  • 开关的checked状态会和深色模式同步,用户切换后再打开页面能看到一致的开关状态。

内容的提问来源于stack exchange,提问作者green-seen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:20:20