Как реализовать темный режим с помощью CSS и JS для веб-приложений

В последние годы темный режим приобрел значительную популярность как опция пользовательского интерфейса. Он предлагает более темный фон, который снижает нагрузку на глаза, особенно в условиях низкой освещенности, и может продлить время работы аккумулятора на мобильных устройствах. В этой статье мы рассмотрим, как реализовать темный режим с помощью CSS и JavaScript, что позволит вам улучшить пользовательский опыт на вашем сайте или приложении. Вы узнаете о простых и эффективных методах внедрения этой функции, что сделает ваш проект более современным и удобным для пользователей.

Понимание темного режима

Темный режим — это стиль отображения, при котором фон интерфейса становится темным, а текст и другие элементы — светлыми. Это решение не только делает интерфейс более эстетически привлекательным, но и улучшает читаемость в условиях низкой освещенности. Пользователи, работающие в темных помещениях или в ночное время, часто отмечают, что темный режим помогает снизить утомляемость глаз и делает взаимодействие с приложением более комфортным.

Кроме того, темный режим может быть полезен для экономии энергии на устройствах с OLED-экранами, где темные пиксели требуют меньше энергии для отображения. Это делает его особенно привлекательным для мобильных пользователей, которые хотят продлить время работы своих устройств.

Важно отметить, что темный режим не является универсальным решением. Он может не подойти для всех типов контента или интерфейсов. Например, некоторые графические элементы могут выглядеть менее заметно на темном фоне, что может затруднить восприятие информации. Поэтому важно тщательно продумывать дизайн и тестировать его на разных устройствах и в различных условиях освещения.

Темный режим также может быть адаптирован под различные стили и предпочтения пользователей. Многие современные приложения и веб-сайты предлагают возможность переключения между светлым и темным режимами, что позволяет пользователям выбирать наиболее подходящий для них вариант. Это не только улучшает пользовательский опыт, но и демонстрирует внимание разработчиков к потребностям своей аудитории.

В конечном итоге, понимание темного режима и его преимуществ поможет вам создать более интуитивно понятный и удобный интерфейс, который будет соответствовать современным тенденциям дизайна и ожиданиям пользователей.

Эксперты в области веб-разработки отмечают, что реализация темного режима на сайте с помощью CSS и JavaScript может значительно улучшить пользовательский опыт. Основной подход заключается в использовании CSS-переменных для управления цветами. Это позволяет легко переключать темы, изменяя значения переменных в зависимости от выбранного режима.

JavaScript, в свою очередь, может быть использован для сохранения предпочтений пользователя, например, через localStorage. При загрузке страницы скрипт проверяет, какой режим был активен ранее, и применяет соответствующие стили.

Кроме того, специалисты рекомендуют учитывать доступность: важно, чтобы текст оставался читаемым и контрастным в любом режиме. Таким образом, грамотная реализация темного режима не только улучшает визуальную привлекательность сайта, но и способствует его удобству и функциональности.

Как сделать Dark mode для сайта за 5 минут ? #javascriptКак сделать Dark mode для сайта за 5 минут ? #javascript

Настройка вашего проекта

Прежде чем реализовать это, убедитесь, что у вас есть проект, настроенный и готовый к работе. Ваши файлы HTML, CSS и JavaScript должны быть структурированы.

Метод CSS JavaScript
Переключение с помощью CSS переменных (Custom Properties) :root { --bg-color: white; --text-color: black; } .dark-mode { --bg-color: black; --text-color: white; } body { background-color: var(--bg-color); color: var(--text-color); } document.body.classList.toggle('dark-mode');
Переключение с помощью отдельных CSS классов .light-mode body { background-color: white; color: black; } .dark-mode body { background-color: black; color: white; } document.body.classList.replace('light-mode', 'dark-mode'); или document.body.classList.toggle('dark-mode');
Использование медиа-запроса (для системной темы) @media (prefers-color-scheme: dark) { body { background-color: black; color: white; } } Не требуется
Сохранение состояния с помощью LocalStorage /* CSS как в предыдущих методах */ let darkMode = localStorage.getItem('darkMode'); if (darkMode === 'enabled') { document.body.classList.add('dark-mode'); } // ... обработчик события для переключения и сохранения в localStorage
Плавное переключение /* CSS как в предыдущих методах, возможно добавление transition */ document.body.classList.add('dark-mode'); setTimeout(() => { /* дополнительный код, например, удаление временных классов */ }, 500);

Интересные факты

Вот несколько интересных фактов о реализации темного режима с помощью CSS и JavaScript:

  1. Использование CSS переменных: Для упрощения переключения между светлым и темным режимами можно использовать CSS переменные. Например, можно определить переменные для основных цветов и затем менять их значения в зависимости от выбранного режима. Это позволяет легко управлять стилями и делает код более читабельным.

    :root {
    --background-color: white;
    --text-color: black;
    }
    
    [data-theme="dark"] {
    --background-color: black;
    --text-color: white;
    }
    
    body {
    background-color: var(--background-color);
    color: var(--text-color);
    }
    
  2. Сохранение предпочтений пользователя: С помощью JavaScript можно сохранять выбор пользователя о темном или светлом режиме в localStorage. Это позволяет сохранять настройки даже после перезагрузки страницы. Например:

    const toggleTheme = () => {
    const currentTheme = document.documentElement.getAttribute('data-theme');
    const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
    document.documentElement.setAttribute('data-theme', newTheme);
    localStorage.setItem('theme', newTheme);
    };
    
    // При загрузке страницы
    const savedTheme = localStorage.getItem('theme') || 'light';
    document.documentElement.setAttribute('data-theme', savedTheme);
    
  3. Автоматическое определение режима: С помощью JavaScript можно автоматически определять предпочтения пользователя, используя matchMedia. Это позволяет адаптировать интерфейс в зависимости от настроек системы пользователя (например, если у него установлен темный режим):

    const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)");
    
    if (prefersDarkScheme.matches) {
    document.documentElement.setAttribute('data-theme', 'dark');
    } else {
    document.documentElement.setAttribute('data-theme', 'light');
    }
    
    prefersDarkScheme.addEventListener('change', (event) => {
    const newTheme = event.matches ? 'dark' : 'light';
    document.documentElement.setAttribute('data-theme', newTheme);
    localStorage.setItem('theme', newTheme);
    });
    

Эти факты подчеркивают, как можно эффективно реализовать темный режим, улучшая пользовательский опыт и адаптируя интерфейс под предпочтения пользователей.

Темная или светлая? Делаем переключение темы на CSS, автоматически или вручнуюТемная или светлая? Делаем переключение темы на CSS, автоматически или вручную

HTML-код

Для начала реализации темного режима необходимо создать базовую структуру HTML. Это позволит вам легко управлять стилями и взаимодействиями на странице. Вот пример простого HTML-кода, который можно использовать в вашем проекте:









Темный режим


Добро пожаловать в наш проект

О темном режиме

Темный режим помогает снизить нагрузку на глаза и улучшить восприятие контента в условиях низкой освещенности.

Преимущества темного режима

Темный режим не только эстетически приятен, но и может продлить срок службы батареи на мобильных устройствах.

© 2023 Ваш сайт

В этом примере мы создали простую страницу с заголовком, основным содержимым и кнопкой для переключения темного режима. Кнопка с идентификатором toggle-theme будет использоваться для активации и деактивации темного режима. Также обратите внимание на подключение CSS-файла и JavaScript-файла, которые будут содержать стили и логику для реализации темного режима.

Такой подход позволит вам легко управлять контентом и стилями, а также добавлять дополнительные элементы по мере необходимости.

CSS-код

Добавьте следующий CSS для оформления примера. Это будет светлый режим по умолчанию, который вы позже дополните новыми стилями для темного режима.

 @import url("https://fonts.googleapis.com/css2?family=Quicksand:wght@400;700&display=swap");

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html { font-size: 62.5%; }

body { font-family: "Quicksand", sans-serif; }

.navbar {
    display: flex;
    padding: 2rem;
    font-size: 1.6rem;
    align-items: center;
    color: rgb(176, 58, 46);
    background-color: #fdedec;
}

.navbar span { margin-right: auto; }

.logo { font-weight: 700; }

.nav__lists {
    display: flex;
    list-style: none;
    column-gap: 2rem;
    margin: 0 2rem;
}

#theme__switcher { cursor: pointer; }

main {
    width: 300px;
    margin: 5rem auto;
    font-size: 2rem;
    line-height: 2;
    padding: 1rem 2rem;
    border-radius: 10px;
    box-shadow: 2px 3.5px 5px rgba(242, 215, 213, 0.4);
}

На данный момент ваш интерфейс должен выглядеть так:

После этой Инструкции ты сможешь Легко Добавить Темную Тему на Сайт! JavaScript + CSS + HTML!После этой Инструкции ты сможешь Легко Добавить Темную Тему на Сайт! JavaScript + CSS + HTML!

Реализация темного режима с использованием CSS и JavaScript

Реализация темного режима с использованием CSS и JavaScript включает в себя несколько ключевых шагов, которые помогут вам создать удобный и функциональный интерфейс.

Создание классов тем предполагает определение стилей для светлой и темной тем. Для этого вы можете использовать CSS-классы, которые будут переключаться в зависимости от выбора пользователя. Например, вы можете создать класс .dark-mode, который будет содержать все необходимые стили для темного режима. В этом классе можно задать темный фон, светлый текст и изменить цвета для различных элементов интерфейса, таких как кнопки и ссылки. Пример CSS-кода для темного режима может выглядеть так:

body.dark-mode {
background-color: #121212;
color: #ffffff;
}

.dark-mode a { color: #bb86fc; }

.dark-mode button { background-color: #3700b3; color: #ffffff; }

Выбор интерактивных элементов — это следующий шаг, который включает в себя определение, какие элементы на вашей странице будут изменяться при активации темного режима. Это могут быть не только текст и фон, но и кнопки, формы, заголовки и другие элементы интерфейса. Важно убедиться, что все элементы хорошо видны и читаемы в темном режиме, чтобы не ухудшить пользовательский опыт.

Добавление функции переключения — это один из самых интересных аспектов реализации темного режима. Вы можете создать кнопку или переключатель, который будет активировать или деактивировать темный режим. Для этого вам понадобится JavaScript. Пример простого скрипта для переключения классов может выглядеть так:

const toggleButton = document.getElementById('toggle-dark-mode');

toggleButton.addEventListener('click', () => { document.body.classList.toggle('dark-mode'); });

Этот код добавляет обработчик события на кнопку, который при каждом нажатии будет переключать класс dark-mode у элемента body. Таким образом, пользователь сможет легко переключаться между светлой и темной темами.

Улучшение темного режима с помощью JavaScript позволяет сделать ваш интерфейс более адаптивным и удобным. Определение предпочтений пользователя — это важный аспект, который поможет вам автоматически устанавливать темный режим, если пользователь предпочитает его. Вы можете использовать window.matchMedia для проверки системных настроек пользователя:

const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)");

if (prefersDarkScheme.matches) { document.body.classList.add('dark-mode'); }

Сохранение предпочтений пользователя с помощью локального хранилища — это следующий шаг, который позволит вам запомнить выбор пользователя даже после обновления страницы. Вы можете сохранить состояние темного режима в localStorage и загружать его при загрузке страницы:

toggleButton.addEventListener('click', () => {
document.body.classList.toggle('dark-mode');
localStorage.setItem('dark-mode', document.body.classList.contains('dark-mode'));
});

if (localStorage.getItem('dark-mode') === 'true') { document.body.classList.add('dark-mode'); }

Таким образом, при следующем посещении сайта пользователь увидит ту же тему, которую он выбрал ранее. Это значительно улучшает пользовательский опыт и делает ваш сайт более персонализированным.

Создание классов тем

Используйте один класс для каждой темы, чтобы можно было легко переключаться между двумя режимами. Для более полного проекта вам следует подумать, как темный режим может повлиять на каждый аспект вашего дизайна.

 .dark {
    background: #1f1f1f;
    color: #fff;
}

.light {
    background: #fff;
    color: #333;
}

Выбор интерактивных элементов

При выборе интерактивных элементов для реализации темного режима важно учитывать, как они будут взаимодействовать с пользователем и как изменится их внешний вид при переключении между светлой и темной темами. Основные элементы, которые стоит адаптировать, включают кнопки, ссылки, формы и другие элементы управления.

Первым шагом является определение стилей для каждого из этих элементов в обоих режимах. Например, кнопки могут иметь светлый фон и темный текст в светлом режиме, и наоборот — темный фон с светлым текстом в темном режиме. Это обеспечит хорошую читаемость и визуальную привлекательность.

Также стоит обратить внимание на состояние интерактивных элементов, такие как наведение курсора или нажатие. Например, при наведении на кнопку в светлом режиме цвет фона может немного затемняться, а текст — становиться более ярким. В темном режиме, наоборот, фон может стать чуть светлее, а текст — темнее. Это создаст эффект обратной связи для пользователя и сделает интерфейс более отзывчивым.

Не забывайте про ссылки. В светлом режиме они могут быть подчеркнутыми с использованием яркого цвета, а в темном — использовать более мягкие оттенки, чтобы не вызывать дискомфорта при чтении. Также стоит предусмотреть изменение цвета ссылок при наведении, чтобы пользователи могли легко идентифицировать их как кликабельные элементы.

Формы и поля ввода также требуют внимания. В светлом режиме они могут иметь светлый фон с темными границами, а в темном — темный фон с более светлыми границами. Важно, чтобы текст в полях ввода был четким и легко читаемым в обоих режимах. Не забудьте добавить стили для состояния фокуса, чтобы пользователи могли видеть, когда они активировали поле ввода.

В заключение, выбор интерактивных элементов для темного режима должен быть продуманным и учитывать удобство использования. Правильные стили и визуальные эффекты помогут создать гармоничный и интуитивно понятный интерфейс, который будет радовать пользователей независимо от их предпочтений.

Добавление функции переключения

Затем используйте следующий код JavaScript для переключения между классами светлого режима (светлого) и темного режима (темного). Обратите внимание, что также неплохо изменить тумблер, чтобы он указывал текущий режим. Этот код делает это с помощью CSS-фильтра.

 // Function to set the theme

function setTheme(theme) {
    // If the theme is "dark," add the "dark" class, remove "light" class,
    // and adjust filter style
    bodyEl.classList.toggle("dark", theme === "dark");

    // If the theme is "light," add the "light" class, remove "dark" class,
    bodyEl.classList.toggle("light", theme !== "dark");

    // adjust filter of the toggle switch
    themeToggle.style.filter = theme === "dark" ? "invert(75%)" : "none";
}


// Function to toggle the theme between light and dark

function toggleTheme() {
    setTheme(bodyEl.classList.contains("dark") ? "light" : "dark");
}

themeToggle.addEventListener("click", toggleTheme);

Это позволяет вашей странице менять темы одним щелчком мыши по контейнеру переключения.

Улучшение темного режима с помощью JavaScript

Темный режим можно значительно улучшить с помощью JavaScript, что позволяет сделать его более адаптивным и удобным для пользователей. В этом разделе мы рассмотрим, как определить предпочтения пользователя и сохранить их, чтобы обеспечить постоянство настроек.

Определение предпочтений пользователя — важный шаг в создании удобного интерфейса. Вы можете использовать свойство matchMedia для проверки, предпочитает ли пользователь темную тему. Это позволяет автоматически применять темный режим, если пользователь настроил его в системе. Например, следующий код проверяет, активирован ли темный режим в настройках пользователя:

const prefersDarkScheme = window.matchMedia("(prefers-color-scheme: dark)");

if (prefersDarkScheme.matches) { document.body.classList.add("dark-mode"); } else { document.body.classList.remove("dark-mode"); }

Этот код добавляет класс dark-mode к элементу body, если пользователь предпочитает темную тему. Это позволяет вам сразу же адаптировать стиль вашего сайта к предпочтениям пользователя.

Следующий шаг — сохранение предпочтений пользователя с помощью локального хранилища. Это позволяет пользователю выбрать темный или светлый режим, и эти настройки будут сохраняться даже после обновления страницы. Для этого можно использовать следующий код:

const toggleSwitch = document.querySelector('#toggle');

toggleSwitch.addEventListener('change', () => { if (toggleSwitch.checked) { document.body.classList.add("dark-mode"); localStorage.setItem("theme", "dark"); } else { document.body.classList.remove("dark-mode"); localStorage.setItem("theme", "light"); } });

// Проверяем сохраненные предпочтения при загрузке страницы if (localStorage.getItem("theme") === "dark") { document.body.classList.add("dark-mode"); toggleSwitch.checked = true; }

В этом коде мы добавляем обработчик событий на переключатель, который изменяет класс dark-mode в зависимости от состояния переключателя. Также мы сохраняем выбор пользователя в локальном хранилище, чтобы при следующем посещении сайта настройки применялись автоматически.

Таким образом, с помощью JavaScript вы можете не только реализовать темный режим, но и сделать его более персонализированным для каждого пользователя. Это значительно улучшает взаимодействие с интерфейсом и делает ваш сайт более современным и удобным.

Определение предпочтений пользователя

Это включает в себя проверку системной темы пользователя перед загрузкой веб-сайта и настройку вашего сайта в соответствии с ней. Вот как это можно сделать с помощью функции matchMedia:

 // Function to detect user's preferred theme

function detectPreferredTheme() {
    // Check if the user prefers a dark color scheme using media queries
    const prefersDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;
    setTheme(prefersDarkMode);
}

// Run the function to detect the user's preferred theme
detectPreferredTheme();

Теперь любой пользователь, посетивший ваш сайт, увидит дизайн, соответствующий текущей теме его устройства.

Сохранение предпочтений пользователя с помощью локального хранилища

Для сохранения предпочтений пользователя относительно темного или светлого режима можно использовать локальное хранилище браузера. Это позволяет запомнить выбор пользователя даже после перезагрузки страницы или закрытия браузера.

Первым шагом будет создание функции, которая будет сохранять выбранный режим в локальном хранилище. Например, если пользователь выбирает темный режим, мы можем сохранить это значение под ключом «theme». Вот пример кода:

function saveThemePreference(theme) {
localStorage.setItem('theme', theme);
}

Теперь, когда пользователь переключает режим, мы можем вызывать эту функцию, передавая ей текущий режим. Например:

document.querySelector('#theme-toggle').addEventListener('click', function() {
const currentTheme = document.body.classList.toggle('dark-mode') ? 'dark' : 'light';
saveThemePreference(currentTheme);
});

Следующим шагом будет загрузка сохраненного предпочтения при загрузке страницы. Это можно сделать, проверяя локальное хранилище и применяя соответствующий класс к элементу body. Вот как это можно реализовать:

window.onload = function() {
const savedTheme = localStorage.getItem('theme');
if (savedTheme) {
document.body.classList.toggle('dark-mode', savedTheme === 'dark');
}
};

Таким образом, при каждом открытии страницы будет проверяться, какой режим был выбран ранее, и он будет автоматически применяться. Это обеспечивает более персонализированный опыт для пользователя, так как ему не придется каждый раз вручную переключать режим.

С помощью локального хранилища вы можете не только улучшить удобство использования вашего сайта, но и создать более современный интерфейс, который учитывает предпочтения пользователей.

Использование ориентированного на пользователя дизайна

Темный режим выходит за рамки внешнего вида; речь идет о том, чтобы поставить на первое место комфорт и предпочтения пользователя. Следуя этому подходу, вы сможете создать удобные интерфейсы и стимулировать повторные посещения. При разработке кода и дизайна уделяйте приоритетное внимание благополучию пользователей и обеспечивайте своим читателям лучший цифровой опыт.

Тестирование и отладка темного режима

Тестирование темного режима

После реализации темного режима важно провести его тестирование, чтобы убедиться, что все элементы интерфейса корректно отображаются и функционируют. Начните с проверки всех страниц вашего веб-приложения или сайта, чтобы убедиться, что темный режим активируется и деактивируется без ошибок. Обратите внимание на следующие аспекты:

  • Контрастность текста: Убедитесь, что текст остается читаемым на темном фоне. Используйте инструменты для проверки контрастности, такие как WebAIM Contrast Checker, чтобы гарантировать, что соотношение контрастности соответствует стандартам доступности.
  • Изображения и графика: Проверьте, как изображения и графические элементы отображаются в темном режиме. Возможно, вам потребуется создать альтернативные версии изображений, которые лучше смотрятся на темном фоне.
  • Кнопки и интерактивные элементы: Убедитесь, что все кнопки и интерактивные элементы имеют достаточный уровень контрастности и четко видны. Проверьте, что их состояние (например, при наведении или нажатии) также корректно отображается.

Отладка темного режима

Если вы столкнулись с проблемами при тестировании, вам может понадобиться отладить стили и скрипты. Вот несколько шагов, которые помогут вам в этом процессе:

  • Используйте инструменты разработчика: В большинстве современных браузеров есть встроенные инструменты разработчика, которые позволяют вам просматривать и редактировать CSS в реальном времени. Это поможет вам быстро выявить и исправить проблемы с отображением.
  • Проверка медиа-запросов: Убедитесь, что ваши медиа-запросы для темного режима правильно настроены. Проверьте, что они не конфликтуют с другими стилями и что они применяются в нужных условиях.
  • Логирование в консоли: Если вы используете JavaScript для переключения темного режима, добавьте логирование в консоль, чтобы отслеживать, когда и как переключается режим. Это может помочь выявить ошибки в логике вашего кода.

Тестирование на разных устройствах

Не забудьте протестировать темный режим на различных устройствах и браузерах. Разные платформы могут по-разному обрабатывать CSS и JavaScript, поэтому важно убедиться, что ваш темный режим работает везде. Также стоит проверить, как темный режим взаимодействует с системными настройками устройства, такими как автоматическое переключение темного и светлого режимов.

Сбор обратной связи

После завершения тестирования и отладки темного режима, соберите обратную связь от пользователей. Это поможет вам выявить возможные проблемы, которые вы могли пропустить, и улучшить пользовательский опыт. Вы можете использовать опросы или просто попросить пользователей поделиться своими впечатлениями о новом режиме.

Вопрос-ответ

Что такое темный режим и почему он стал популярен?

Темный режим — это стиль отображения интерфейса, при котором фон становится темным, а текст и элементы интерфейса — светлыми. Он стал популярен благодаря тому, что снижает нагрузку на глаза в условиях низкой освещенности, экономит заряд батареи на устройствах с OLED-экранами и предоставляет пользователям возможность выбора между светлой и темной темами для более комфортного восприятия контента.

Как можно переключать между светлым и темным режимами с помощью JavaScript?

Для переключения между режимами можно использовать JavaScript для изменения класса на элементе `

`. Например, при нажатии на кнопку можно добавить или удалить класс ‘dark-mode’, который будет определять стили для темного режима. Вот пример кода:


Какие CSS-стили нужно использовать для реализации темного режима?

Для реализации темного режима необходимо определить стили для класса ‘dark-mode’. Например, можно установить темный фон и светлый текст:


Также можно настроить стили для других элементов, таких как кнопки и ссылки, чтобы они соответствовали темному оформлению.

Советы

СОВЕТ №1

Используйте CSS-переменные для упрощения управления цветами. Определите основные цвета для светлой и темной тем, а затем переключайте их с помощью JavaScript. Это позволит вам легко изменять цветовую палитру и поддерживать код в чистоте.

СОВЕТ №2

Добавьте кнопку переключения темного режима на видимое место на странице. Это может быть иконка или текстовая ссылка, чтобы пользователи могли легко включать и выключать темный режим по своему желанию.

СОВЕТ №3

Не забудьте сохранить предпочтения пользователя. Используйте localStorage для хранения выбранной темы, чтобы при следующем посещении сайта пользователь автоматически получал свой предпочтительный режим отображения.

СОВЕТ №4

Тестируйте темный режим на различных устройствах и экранах. Убедитесь, что текст остается читаемым, а элементы интерфейса хорошо различимы в обоих режимах, чтобы обеспечить комфортное использование для всех пользователей.

Ссылка на основную публикацию
Похожее