Автор этой статьи:Gavin, несанкционированное воспроизведение запрещено.
Это надежный метод преобразования, который поддерживает темный режим.В качестве примера возьмем страницу статьи Nuggets:
Теперь добавьте волшебный CSS
@media (prefers-color-scheme: dark) {
html {
filter: invert(1) hue-rotate(180deg);
}
}
Это так просто, вы сделали! ✌️
Реализовать темный режим
хром эмулирует темный режим
объяснять
filter
Свойства CSS применяют к элементам графические эффекты, такие как размытие или изменение цвета. Фильтры часто используются для настройки рендеринга изображений, фона и границ. (Ссылаться на:Веб-документация MDN)
Для темного режима дваfilter
:invert
а такжеhue-rotate
invert: инвертировать входное изображение. Значение определяет масштаб преобразования. 100% (или1
) полностью преобразует: черный в белый, белый в черный и аналогично для других цветов.
hue-rotate:hue-rotate
Чтобы помочь нам справиться с другими цветами, кроме черного и белого, оттенок поворачивается на 180 градусов, чтобы гарантировать, что цветовая тема веб-страницы не изменится, а только ослабит ее цвет. Единственным недостатком этого подхода является то, что он также переворачивает все изображения на странице. Поэтому для решения этой проблемы необходимо добавить одно и то же правило ко всем изображениям на странице.
@media (prefers-color-scheme: dark) {
html {
filter: invert(1) hue-rotate(180deg);
}
html img {
filter: invert(1) hue-rotate(180deg);
}
}
Конечно, вы также можете добавитьtransition
эффект перехода
html {
transition: color 300ms, background-color 300ms;
}
результат
Внимательные студенты могут обнаружить, что проблема с аватаром выше все еще существует, и он не изменился на исходный цвет изображения, потому что тег a, используемый для аватара в статье Nuggets, такой же, как и выше, мы также можем добавить обратно к тегу a, и окончательный код выглядит следующим образом:
@media (prefers-color-scheme: dark) {
html {
filter: invert(1) hue-rotate(180deg);
}
html img {
filter: invert(1) hue-rotate(180deg);
}
a {
filter: invert(1) hue-rotate(180deg);
}
}
html {
transition: color 300ms, background-color 300ms;
}
Справочная статья:Dev.to/AK Hi La Per Capita/…
Использование JS для реализации темного режима:Dev.to/AK Hi La Per Capita/…