Similar a " ¿Cómo detectar si OS X está en modo oscuro? " Solo para navegadores.
¿Alguien ha encontrado si hay una manera de detectar si el sistema del usuario está en el nuevo Modo Oscuro OS X en Safari / Chrome / Firefox?
Nos gustaría cambiar el diseño de nuestro sitio para que sea amigable en modo oscuro basado en el modo operativo actual.
Respuestas:
El nuevo estándar está registrado en W3C en Media Consultas Nivel 5 .
NOTA: actualmente solo está disponible en Safari Technology Preview Release 68En caso de que la preferencia del usuario sea
light
:En caso de que la preferencia del usuario sea
dark
:También existe la opción
no-preference
en caso de que un usuario no tenga preferencia. Pero le recomiendo que solo use CSS normal en ese caso y conecte en cascada su CSS correctamente.-
-
-
-
-
fuente
window.matchMedia("(prefers-color-scheme: dark)").matches
si tengo algo de tiempo libre, agregaré una solución javascript completa a mi respuesta.Si desea detectarlo desde JS, puede usar este código:
Para ver los cambios:
fuente
matchMedia
y luego intentará hacer coincidir laprefers-color-scheme: dark
cadena. Si coincide, estamos en modo oscuro.if (window.matchMedia?('(prefers-color-scheme: dark)').matches) { }
Esto se está discutiendo actualmente (septiembre de 2018) en "Borradores del editor del grupo de trabajo CSS" .La especificación se ha lanzado (ver arriba), disponible como una consulta de medios. Algo ya ha aterrizado en Safari, ver también aquí . Entonces, en teoría, puedes hacer esto en Safari / Webkit:Pero parece que esto es privado .En MDNinverted-colors
se menciona una función de medios CSS . Plug: escribí en un blog sobre el modo oscuro aquí .fuente
Busqué en la API de Mozilla, no parecen tener ninguna variable correspondiente al color de las ventanas del navegador. Aunque encontré una página que podría ayudarte: Cómo usar los estilos del sistema operativo en CSS . A pesar del encabezado del artículo, los colores son diferentes para Chrome y Firefox.
fuente
Según Mozilla, este es el método preferido a partir de septiembre de 2019
fuente