Темный режим с использованием CSS-фильтра

Нажмите на значёк «Темный режим» в шапке сайта, чтобы посмотреть CSS-фильтр в действии.

Флажок только переключает dark-mode класс <body> элемента.

Что делает dark-mode класс?

html.dark-mode {
  filter: invert(100%);
}

Установленное filter свойство invert(100%) инвертирует все цвета на странице.

Мы можем обработать отдельно Img и сделать, чтобы изображения не выглядели как фотонегативы.

Можно использовать такой селектор:

:not(img) { filter: invert(100%) } 

Что значительно сократить код.

Мы можем добавьте hue-rotate (180deg), это сделает invert немного лучше.

filter: invert(100%) hue-rotate(180deg);

И т.д. Это позволило убрать немного css, который требует поддержки.

CSS

2 Ответа

  1. Заметил, так действительно более универсально. Но для большого проекта возможно стоит использовать переменные?

    1. Да, это возможно. Тут большое поле деятельности. Переменные более гибко могут позволить подойти к элементам. Но на данный момент, инвертировать цвета, проще и быстрей сделать. )