javascript - 如何使用单个脚本更改多个元素的样式?

标签 javascript html css

所以基本上我想为我的网站制作一个暗模式切换器。我有一个小脚本开始。它基本上切换 CSS 样式。但如果我离开或刷新页面,样式将不会明显保留...

<style>
    .mystyle {
        color:red !important;
        background-color: black !important;
    }

</style>
<script>
    function init(){ 
    var element = document.body;
   element.classList.toggle("mystyle");
}
</script>

所以我的目标是让这个切换按钮在整个站点中保持当前状态,即使在刷新或更改页面后也是如此......

最佳答案

一个简单的方法是将状态保存在 localStorage 中,并在加载页面时根据其值切换类。

以下是您可以如何实现它:

<style>
  .dark-mode {
    color: red;
    background-color: black;
  }
</style>

<body>
  <button onclick="toggleMode()">Switch Mode</button>
</body>

<script>
  const body = document.body;

  if (localStorage.mode === 'dark') {
    body.classList.add("dark-mode")
  };

  function toggleMode() {
    body.classList.toggle("dark-mode");
    localStorage.setItem(
      'mode', localStorage.mode === 'light' || localStorage.mode === undefined ? 'dark' : 'light'
    );
  }
</script>

关于javascript - 如何使用单个脚本更改多个元素的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56119517/

相关文章:

javascript - 有没有办法在 ios 和 android 应用程序中使用公共(public)文件夹?

html - 如何单独使用 CSS 在点击时更改图像?

css - 基于 Java 的邮件程序无法在 gmail 中正确显示

css - 具有 "position: absolute;"的 <span> 元素是否表现为 block 级元素?

javascript - 没有循环的尾递归树遍历

javascript - 将 4 个数字自动制表符填入下一个输入字段后

javascript - 删除当前上传项目的一个 div

jquery - 使用 Bootstrap 将并排的网格位置交换到顶部和底部

html - 导航栏不起作用

javascript - 使用 each() 遍历多个 ul 并隐藏任何大于 8 的子 li