const toggleSwitch = document.querySelector(
'.theme-switch input[type="checkbox"]'
);
// Had to remove local storage for security. Make sure to uncomment in your code.
// const currentTheme = localStorage.getItem("theme");
// if (currentTheme) {
// document.documentElement.setAttribute("data-theme", currentTheme);
// if (currentTheme === "dark") {
// toggleSwitch.checked = true;
// }
// }
function switchTheme(e) {
if (e.target.checked) {
document.documentElement.setAttribute("data-theme", "dark");
// localStorage.setItem("theme", "dark");
} else {
document.documentElement.setAttribute("data-theme", "light");
// localStorage.setItem("theme", "light");
}
}
toggleSwitch.addEventListener('change', switchTheme)
[data-theme="dark"] {
background-color: black;
color: white;
}
.theme-switch {
display: inline-block;
height: 34px;
position: relative;
width: 60px;
}
.theme-switch input {
display: none;
}
.slider {
background-color: #ccc;
bottom: 0;
cursor: pointer;
left: 0;
position: absolute;
right: 0;
top: 0;
transition: .4s;
}
.slider:before {
background-color: #fff;
bottom: 4px;
content: "";
height: 26px;
left: 4px;
position: absolute;
transition: .4s;
width: 26px;
}
input:checked+.slider {
background-color: #66bb6a;
}
input:checked+.slider:before {
transform: translateX(26px);
}
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}
<!DOCTYPE html>
<html lang="en">
<body>
<div class="container">
<nav class="navbar navbar-expand-xl navbar-transparent bg-transparent">
<label class="theme-switch" for="checkbox">
<input type="checkbox" id="checkbox"/>
<div class="slider round"></div>
</label>
</nav>
</body>
</html>
Вам нужно добавить прослушиватель событий в ваш флажок, чтобы ваш javascript выглядел так:
const toggleSwitch = document.querySelector(
'.theme-switch input[type="checkbox"]'
);
const currentTheme = localStorage.getItem("theme");
if (currentTheme) {
document.documentElement.setAttribute("data-theme", currentTheme);
if (currentTheme === "dark") {
toggleSwitch.checked = true;
}
}
function switchTheme(e) {
if (e.target.checked) {
document.documentElement.setAttribute("data-theme", "dark");
localStorage.setItem("theme", "dark");
} else {
document.documentElement.setAttribute("data-theme", "light");
localStorage.setItem("theme", "light");
}
}
toggleSwitch.addEventListener('change', switchTheme)
You также необходимо изменить селектор .dark-mode
CSS на [data-theme="dark"]