Detección del modo oscuro y detección del cambio de modo mediante JavaScript
Usando CSS podemos detectar el modo oscuro usando la prefers-color-scheme
consulta de medios.
Pero… ¿qué pasa si tenemos que usar JavaScript? Hace poco me topé con este problema, porque tenía un código JavaScript que agregaba una imagen a la página, pero quería mostrar una imagen diferente según el modo claro/oscuro.
Aquí te explicamos cómo podemos hacerlo.
Primero, detecta si el matchMedia
objeto existe (de lo contrario, el navegador no admite el modo oscuro y puedes volver al modo claro).
Luego, verifica si está en modo oscuro usando
window.matchMedia('(prefers-color-scheme: dark)').matches
Esto regresará true
si el modo oscuro está habilitado.
Aquí hay un ejemplo completo, donde invierno los colores de una imagen si está en modo oscuro:
const img = document.querySelector('#myimage')if (window.matchMedia window.matchMedia('(prefers-color-scheme: dark)').matches) { img.style.filter="invert(100%)";}
Pero hay un problema: ¿qué pasa si el usuario cambia de modo mientras usa nuestro sitio web?Te recomendamos Todos sobre el antiguo egipto
Podemos detectar el cambio de modo usando un detector de eventos, de esta manera:
window.matchMedia('(prefers-color-scheme: dark)') .addEventListener('change', event = { if (event.matches) { //dark mode } else { //light mode }})
Tips para principiantes de JavaScript
Tal vez te puede interesar:
- Cómo generar un número aleatorio entre dos números en JavaScript
- Cómo esperar el evento DOM listo en JavaScript simple
- Cómo determinar si una fecha es hoy en JavaScript
- Cómo contar el número de propiedades en un objeto JavaScript
Cómo detectar el modo oscuro usando JavaScript
Usando CSS podemos detectar el modo oscuro usando la prefers-color-schemeconsulta de medios. Detección del modo oscuro y detección del cambio de modo mediant
programar
es
2025-01-09

Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente