Browser Integration
Match Media Theme
matchMedia reads a CSS media query from JavaScript and updates the page when the preference changes.
Program
matchMedia connects JavaScript to media query state such as viewport width or color scheme preference.
match_media_theme.html
<main id="shell" class="panel">Theme follows system</main>
<script>
const shellEl = document.querySelector("#shell");
const query = matchMedia("(prefers-color-scheme: dark)");
function apply(event) {
shellEl.dataset.scheme = event.matches ? "dark" : "light";
}
apply(query);
query.addEventListener("change", apply);
</script>
matchMedia
matchMedia evaluates a CSS media query from JavaScript.
change event
A media query list can notify code when its matches value changes.