-
Notifications
You must be signed in to change notification settings - Fork 2
/
script.js
30 lines (26 loc) · 1.01 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
const switchButton = document.getElementById("checkbox");
const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)").matches;
let theme = localStorage.getItem("theme") ? localStorage.getItem("theme") : (prefersDarkScheme ? "dark" : "light");
const checkbox = document.getElementById("checkbox");
window.addEventListener('DOMContentLoaded', () => setTheme(theme));
switchButton.addEventListener("click", () => toggleTheme());
function toggleTheme() {
theme = theme === "light" ? "dark" : "light";
localStorage.setItem("theme", theme);
setTheme(theme);
}
function setTheme(mode) {
if (mode === 'light') {
if (document.body.classList.contains("dark-theme")) {
document.body.classList.remove("dark-theme");
}
document.body.classList.add("light-theme");
checkbox.checked = false;
} else {
if (document.body.classList.contains("light-theme")) {
document.body.classList.remove("light-theme");
}
document.body.classList.add("dark-theme");
checkbox.checked = true;
}
}