À l'écoute des media queries
Comment écouter les changements de la valeur d'une media query en JavaScript
Publié le
En intégrant le changement de thème visuel (via le petit bouton en début de page), j’ai découvert qu’il était possible d’écouter les changements de valeur des media query.
L’objectif ici était de pouvoir dynamiquement changer le thème du site en fonction des préférences système de l’utilisateur (tout en gardant la possibilité de changer manuellement !).
On place un addEventListener
sur l’événement change
de la media query. Il en retourne un objet contenant une clef matches
, un booléen qui indique l’état actuel de la media query. Et le tour est joué !
window
.matchMedia('(prefers-color-scheme: dark)')
.addEventListener('change', ({ matches: isDark }) => {
if (isDark) {
// Toggle light mode.
} else {
// Toggle dark mode.
}
});
Pour en savoir plus : MediaQueryList: change event (en).