Podobne do „ Jak wykryć, czy system OS X jest w trybie ciemnym? ” Tylko dla przeglądarek.
Czy ktoś znalazł sposób na wykrycie, czy system użytkownika znajduje się w nowym trybie OS X Dark Mode w Safari / Chrome / Firefox?
Chcielibyśmy zmienić wygląd naszej strony, aby była przyjazna dla trybu ciemnego w oparciu o obecny tryb pracy.
Odpowiedzi:
Nowy standard jest zarejestrowany w W3C na poziomie 5 zapytań medialnych .
UWAGA: obecnie dostępne tylko w Safari Technology Preview w wersji 68W przypadku, gdy preferencje użytkownika to
light
:/* Light mode */ @media (prefers-color-scheme: light) { body { background-color: white; color: black; } }
W przypadku, gdy preferencje użytkownika to
dark
:/* Dark mode */ @media (prefers-color-scheme: dark) { body { background-color: black; color: white; } }
Istnieje również opcja
no-preference
w przypadku, gdy użytkownik nie ma preferencji. Ale w takim przypadku zalecam użycie zwykłego CSS i poprawne kaskadowanie CSS.-
-
-
-
-
źródło
window.matchMedia("(prefers-color-scheme: dark)").matches
Jeśli będę miał trochę wolnego czasu, dodam do mojej odpowiedzi pełne rozwiązanie javascript.Jeśli chcesz go wykryć z JS, możesz użyć tego kodu:
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { // dark mode }
Aby obserwować zmiany:
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => { const newColorScheme = e.matches ? "dark" : "light"; });
źródło
matchMedia
a następnie spróbuje dopasowaćprefers-color-scheme: dark
ciąg. Jeśli pasuje, jesteśmy w trybie ciemnym.if (window.matchMedia?('(prefers-color-scheme: dark)').matches) { }
Jest to obecnie (wrzesień 2018) omawiane w „Wersjach roboczych edytora grup roboczych CSS” .Uruchomiono Spec (patrz wyżej), dostępny jako zapytanie o media. Coś już wylądowało w Safari, zobacz też tutaj . Więc teoretycznie możesz to zrobić w Safari / Webkit:@media (prefers-dark-interface) { color: white; background: black }
Ale wydaje się, że to sprawa prywatna .Na MDN funkcja mediów CSSinverted-colors
jest wymienione . Wtyczka: napisałem tutaj o trybie ciemnym .źródło
inverted-colors
do wykrywania trybu ciemnego. Po pierwsze, to nie zadziała. Po drugie, służy do ułatwienia dostępu, a nie estetyki. Niektórzy użytkownicy używają trybu odwróconego, aby zwiększyć kontrast ekranu, co jest typowe dla osób z wadami wzroku. Nie zmieniaj wyglądu swojej witryny,inverted-colors
ponieważ w najlepszym przypadku nie będzie ona działać tak, jak chcesz, aw najgorszym może to frustrować tych użytkowników.Przeszukałem API Mozilli, wydaje się, że nie mają żadnych zmiennych odpowiadających kolorowi okien przeglądarki. Chociaż znalazłem stronę, która może ci pomóc: Jak używać stylów systemu operacyjnego w CSS . Pomimo nagłówka artykułu kolory są inne w przeglądarce Chrome i Firefox.
źródło
Według Mozilli jest to preferowana metoda od 2020 roku
@media (prefers-color-scheme: dark) { body { background: #000; } } @media (prefers-color-scheme: light) { body { background: #fff; } }
W przypadku Safari / Webkit możesz użyć
@media (prefers-dark-interface) { background: #000; }
źródło