← Все вопросы
Как сделать переключатель тёмной темы кнопкой? База для новичка
7
Хочу кнопку «тёмная тема»: нажал — фон тёмный, нажал ещё — снова светлый. Видел, что делают через класс на <body>, но не пойму, как переключать. Можно простой пример?
2 ответа
11
✓ Принятый ответ — помог автору
Самый чистый способ — описать тёмную тему классом в CSS и переключать этот класс на <body> через JS.
CSS:
body.dark {
background: #1e1e1e;
color: #eee;
}
HTML + JS:
<button id="theme">Сменить тему</button>
document.getElementById('theme').addEventListener('click', function() {
document.body.classList.toggle('dark');
});
classList.toggle('dark') сам добавляет класс, если его нет, и убирает, если есть. CSS делает остальное: когда у body есть класс dark, применяются тёмные стили. Один обработчик — и переключатель готов.
5
Если хочешь, чтобы выбор темы запоминался после перезагрузки страницы, добавь localStorage:
// при клике
const isDark = document.body.classList.toggle('dark');
localStorage.setItem('dark', isDark);
// при загрузке страницы
if (localStorage.getItem('dark') === 'true') {
document.body.classList.add('dark');
}
Тогда сайт запомнит, что пользователь выбрал тёмную тему. Но для начала хватит и простого toggle.
Ваш ответ
Войдите, чтобы ответить на вопрос.