Как сделать темную тему на сайте. Модули

Не так давно в IT-пространстве появилась тенденция в создании темной темы для своих платформ. Это коснулось практически всего — от приложений до операционных систем. И всё это движение перетекло на сайты.

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

Что такое темная тема?

Темный режим (темный внешний вид) – это популярная концепция в современном дизайне, массово применяемая в разработках приложений, программ, ОС.

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

Для создании темной темы для сайта лучше всего использовать псевдокласс :root и переменные CSS. С помощью их намного проще манипулировать со цветом сайта.

Темная тема для сайтов с помощью JS-плагинов

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

Dark mode switch

>Dark mode switch

Демо Скачать

Очень легкий и простой переключатель темной темы на светлую. Стили для темной темы создаются через свой параметр [data-theme="dark"]. Смотрите пример.

Подключение:

<link rel="stylesheet" href="dark-mode.css">
<script src="dark-mode-switch.min.js"></script>

HTML-переключатель:

<div class="form-check form-switch">
        <input type="checkbox" class="form-check-input" id="darkSwitch">
        <label class="custom-control-label" for="darkSwitch">Dark Mode</label>
</div>

Переопределение стилей:

[data-theme="dark"] .content {
  background-color: #333333 !important;
}
[data-theme="dark"] body {
  background-color: #111111 !important;
}

Dark mode toggle local storage

Dark mode toggle local storage
Демо Скачать

Это модуль работает с jQuery. Он создает переключатель класса к тегу body. При переключении на темную тему — к body добавляется класс dark. Это расширение использует API локального хранилища для сохранения выбранной темы сайта.

Подключение:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
// Dark Mode Setup

var darkMode;

if (localStorage.getItem('dark-mode')) {
  // if dark mode is in storage, set variable with that value
  darkMode = localStorage.getItem('dark-mode');
} else {
  // if dark mode is not in storage, set variable to 'light'
  darkMode = 'light';
}

// set new localStorage value
localStorage.setItem('dark-mode', darkMode);

if (localStorage.getItem('dark-mode') == 'dark') {
  // if the above is 'dark' then apply .dark to the body
  $('body').addClass('dark');
  // hide the 'dark' button
  $('.dark-button').hide();
  // show the 'light' button
  $('.light-button').show();
}

// Toggle dark UI

$('.dark-button').on('click', function() {
  $('.dark-button').hide();
  $('.light-button').show();
  $('body').addClass('dark');
  // set stored value to 'dark'
  localStorage.setItem('dark-mode', 'dark');
});

$('.light-button').on('click', function() {
  $('.light-button').hide();
  $('.dark-button').show();
  $('body').removeClass('dark');
  // set stored value to 'light'
  localStorage.setItem('dark-mode', 'light');
});
</script>

HTML-переключатель:

<div class="switch_dark_bt">
   <ul>
      <li>
         <button class="dark-button">Dark</button>
      </li>
      <li>
         <button class="light-button" hidden="hidden">Light</button>
      </li>
   </ul>
</div>

Стили прописываются через класс .dark:

body.dark {
    background: #333333;
    color: #666666;
}

Darkmode.js master

Darkmode.js master
Демо Скачать

Этот плагин интересен тем, что он, по сути, изменяет цвет автоматически: подключили скрипт и работа завершена. Дело в том, что он использует смешанный режим CSS mix-blend-mode: difference;

Подключение:

<script src="https://unpkg.com/darkmode-js@1.3.4/lib/darkmode-js.js"></script>
<script>
   new Darkmode({
     bottom: '32px',
     right: '32px',
     time: '0.5s',
     label: '&#x1f313;',
     backgroundColor: '#eaf0f2',  // default: '#fff'
     buttonColorDark: '#333',
   // save the dark mode in cookies
   saveInCookies: true
   }).showWidget();
</script>

Переопределение стилей:
Стили в темной теме можно редактировать через класс darkmode--activated, который добавляется к body. Что игнорировать режим смешивания для определенных элементов на сайте, используйте класс darkmode-ignore.

.darkmode--activated p, .darkmode--activated li {
  color: #000;
}

/* Игнор смешанного режима через HTML */
<div class="darkmode-ignore">Содержимое<div>
/* Игнор смешанного режима через css */
.button {
  isolation: isolate;
}
Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *