我想在刷新页面以及所有其他页面时保留所选主题.我见过其他例子,但我不知道如何在代码中实现它,因为我是个新手.到目前为止,我已经包含了该功能的代码.非常感谢.

function changeTheme(bgColor, textColor) {
  var styles = document.documentElement.style;
  styles.setProperty('--bg-color', bgColor);
  styles.setProperty('--text-color', textColor);
}

var dark = document.querySelector('#dark');
var light = document.querySelector('#light');
var blue = document.querySelector('#blue');

dark.addEventListener('click', function() {
  changeTheme('#333', 'white');
});

light.addEventListener('click', function() {
  changeTheme('white', 'black');
});

blue.addEventListener('click', function() {
  changeTheme('#2982F5', 'white');
});
:root {
  --bg-color: #333;
  --text-color: white;
}

body {
  font-family: sans-serif;
  background: #c0c0c0;
}

nav {
  color: var(--text-color);
  background: var(--bg-color);
}

ul {
  display: flex;
  justify-content: center;
  align-items: center;
  list-style-type: none;
}

li {
  margin-left: 15px;
}

a {
  color: var(--text-color);
}
<nav>
  <ul>
    <p>Select theme:</p>
    <li>
      <a href="#" id="dark">Dark</a>
    </li>
    <li>
      <a href="#" id="light">Light</a>
    </li>
    <li>
      <a href="#" id="blue">Blue</a>
    </li>
  </ul>
</nav>

推荐答案

你可以用localStorage块.保持HTML和CSS代码的原样.您的JavaScript代码可能是这样的:

// get stored theme on load
let storedTheme = localStorage.getItem("theme");
if(storedTheme){
 storedTheme= JSON.parse(storedTheme);
 changeTheme(storedTheme.bgColor, storedTheme.textColor);
}

function changeTheme(bgColor, textColor) {
  // updtate stored data when there is a click
  localStorage.setItem("theme", JSON.stringify({bgColor:bgColor, textColor:textColor}));
  var styles = document.documentElement.style;
  styles.setProperty('--bg-color', bgColor);
  styles.setProperty('--text-color', textColor);
}

var dark = document.querySelector('#dark');
var light = document.querySelector('#light');
var blue = document.querySelector('#blue');

dark.addEventListener('click', function() {
  changeTheme('#333', 'white');
});

light.addEventListener('click', function() {
  changeTheme('white', 'black');
});

blue.addEventListener('click', function() {
  changeTheme('#2982F5', 'white');
});

Javascript相关问答推荐

窗口.getComputedStyle()在MutationObserver中不起作用

使用复选框在d3.js多折线图中添加或删除线条

类型自定义lazy Promise. all

我应该绑定不影响状态的函数吗?'

Msgraph用户邀请自定义邮箱模板

TypeScript索引签名模板限制

PrivateRoute不是路由组件错误

将字符串UTC Date转换为ngx—counting leftTime配置值的数字

如何让npx在windows中运行js脚本?

WebGL 2.0无符号整数输入变量

如何添加绘图条形图图例单击角形事件

如何在每次单击按钮时重新加载HighChart/设置HighChart动画?

使用VUE和SCSS的数字滚动动画(&;内容生成)

更改agGRID/Reaction中的单元格格式

在GraphQL解析器中修改上下文值

select 2-删除js插入的项目将其保留为选项

在没有任何悬停或其他触发的情况下连续交换图像

在Java脚本中构建接口的对象

打字脚本中的函数包装键入

我如何才能阻止我的球数以指数方式添加到我的HTML画布中?