[英]How can I save cookies for dark mode and light mode toggling?
我不太清楚如何将暗/亮模式的选择保存为 cookie。
这是我正在尝试的网页: https://schooloffish.info/index.html
尝试了 cookies 的 w3schools 代码,但我无法让它工作。 任何帮助表示赞赏。
使用document.cookie
:
// inside your event listener on the dark mode toggle:
document.cookie = "darkMode=true";
然后,您可以使用诸如getCookie()之类的股票助手 function 来检索值:
let darkMode = getCookie("darkMode");
对于存储主题,最好使用localStorage
。
示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div {
width: 100px;
height: 50px;
border: 1px solid grey;
border-radius: 5px;
background-color: var(--bg);
color: var(--fg);
}
.dark {
--bg: black;
--fg: white;
}
.white {
--bg: white;
--fg: black;
}
</style>
</head>
<body>
<div>lorem ipsum...</div>
<button id='switch' onclick="switchTheme()">switch theme</button>
<script>
function switchTheme() {
var theme = localStorage.getItem('theme');
var html = document.querySelector("html");
if (theme === 'dark') {
new_theme = 'light';
} else {
new_theme = 'dark';
}
html.classList.remove(theme);
html.classList.add(new_theme);
localStorage.setItem('theme', new_theme);
}
window.addEventListener('load', function () {
var theme = localStorage.getItem('theme');
if (theme === null || theme === undefined) {
theme = 'light';
localStorage.setItem('theme', theme);
}
var html = document.querySelector("html");
html.classList.add(theme);
})
</script>
</body>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.