У меня есть два тумблера в моем текущем проекте. Один для темного / светлого режима, а другой показывает / скрывает меню на мобильном телефоне.
Я заметил, когда пользователь обновляет страницу, нажимает стрелку «вверх» или просто переходит на новый страницу, они сбрасывают. Это нарушает пользовательский опыт, поэтому я хотел бы знать, как заставить их постоянно оставаться включенными или выключенными, пока пользователь не щелкнет их снова (или не уйдет с сайта).
Вот видео об этом в действии: https://imgur.com/a/Ww163NA
Ниже приведен код. Что я могу добавить или изменить?
const body = document.getElementById('body');
const darkModeSwitch = document.getElementById('darkModeSwitch');
const menuSwitch = document.getElementById('onOffSwitch');
const mainNavItems = document.getElementById('mainNavItems');
//Show main menu when switch is clicked
menuSwitch.addEventListener('click', () => {
if (mainNavItems.style.display === 'block') {
mainNavItems.style.display = 'none';
} else {
mainNavItems.style.display = 'block';
}
});
//Dark Mode
darkModeSwitch.addEventListener('click', () => {
let currentBodyClass = body.className;
if (body.className === "lightMode") {
body.className = "darkMode";
} else if (currentBodyClass === "darkMode") {
body.className = "lightMode";
}
});
#mainNav * {
color: #FFF;
margin: 0;
}
#mainNav {
display: block;
text-align: center;
padding: 10px;
}
#mainNavLogo {
display: inline-block;
margin: 0 auto;
padding: 25px 0;
font-size: 1.5em;
}
#mainNavItems {
display: none;
width: 40%;
margin: 0 auto !important;
}
#mainNavItems div {
margin-bottom: 15px;
}
#mainNavItems h2:hover {
color: #db7a3d !important;
text-decoration: underline;
}
#onOffSwitch {
position: absolute;
right: 20px;
top: 20px;
}
#darkModeSwitch {
position: absolute;
left: 20px;
top: 20px;
}
body {
margin: 0;
padding: 0;
background: #f3f3f3;
}
input[type="checkbox"] {
position: relative;
height: 50px;
width: 25px;
-webkit-appearance: none;
background: #cecece;
outline: none;
border-radius: 20px;
box-shadow: inset 0 0 5px rgba(255, 0, 0, 0.2);
transition: .25s;
}
input:hover {
cursor: pointer;
}
input:checked[type="checkbox"] {
background: #db7a3d;
}
input[type="checkbox"]:before {
content: '';
position: absolute;
width: 25px;
height: 25px;
border-radius: 20px;
top: 0;
left: 0;
background: #ffffff;
transform: scale(1.1);
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
transition: .35s;
}
input:checked[type="checkbox"]:before {
top: 25px;
}
/* DARK MODE */
#darkModeSwitch {
background: #fff892;
}
#darkModeSwitch:checked {
background: #757575;
}
#darkModeSwitch:before {
background: #fff;
}
#darkModeSwitch:checked:before {
background: #000;
}
<body id="body" class="lightMode">
<div class="wrap">
<header>
<div id="mainNav">
<input id="darkModeSwitch" type="checkbox" title="Toggle Light/Dark Mode" aria-label="Toggle Light/Dark Mode" />
<input id="onOffSwitch" type="checkbox" title="Show/Hide Menu" aria-label="Toggle Light/Dark Mode" />
<div id="mainNavLogo"><a href="home.html"><h1>Worth it!?</h1></a></div>
<div id="mainNavItems">
<div><a href="about.html"><h2>About</h2></a></div>
<div><a href="contact.html"><h2>Contact the Developer</h2></a></div>
</div>
</div>
</header>
</body>