MediaQueryList
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Ein MediaQueryList
-Objekt speichert Informationen zu einer Media Query, die auf ein Dokument angewendet wird, mit Unterstützung sowohl für sofortige als auch ereignisgesteuerte Übereinstimmung mit dem Status des Dokuments.
Sie können eine MediaQueryList
erstellen, indem Sie matchMedia()
auf dem window
-Objekt aufrufen. Das resultierende Objekt verwaltet das Senden von Benachrichtigungen an Listener, wenn sich der Status der Media Query ändert (d.h. wenn der Test der Media Query beginnt oder aufhört, true
zu evaluieren).
Dies ist sehr nützlich für adaptives Design, da es ermöglicht, ein Dokument zu beobachten, um zu erkennen, wann sich seine Media Queries ändern, anstatt die Werte periodisch abzufragen, und ermöglicht es Ihnen, programmatisch Änderungen an einem Dokument basierend auf dem Media Query-Status vorzunehmen.
Instanz-Eigenschaften
Die MediaQueryList
-Schnittstelle erbt Eigenschaften von ihrer Eltern-Schnittstelle, EventTarget
.
Instanz-Methoden
Die MediaQueryList
-Schnittstelle erbt Methoden von ihrer Eltern-Schnittstelle, EventTarget
.
addListener()
Veraltet-
Fügt der
MediaQueryList
eine Callback-Funktion hinzu, die aufgerufen wird, wann immer sich der Status der Media Query ändert — ob das Dokument den Media Queries in der Liste entspricht oder nicht. Diese Methode existiert hauptsächlich aus Kompatibilitätsgründen; nach Möglichkeit sollten Sie stattdessenaddEventListener()
verwenden, um daschange
Ereignis zu überwachen. removeListener()
Veraltet-
Entfernt den angegebenen Listener-Callback aus den Rückrufen, die aufgerufen werden, wenn sich der Media Query-Status der
MediaQueryList
ändert, was passiert, wenn das Dokument zwischen der Übereinstimmung und der Nicht-Übereinstimmung mit den in derMediaQueryList
aufgeführten Media Queries wechselt. Diese Methode wurde aus Gründen der Rückwärtskompatibilität beibehalten; nach Möglichkeit sollten Sie im AllgemeinenremoveEventListener()
verwenden, um Änderungsbenachrichtigungs-Callbacks zu entfernen (die zuvor mitaddEventListener()
hinzugefügt worden sein sollten).
Ereignisse
Die folgenden Ereignisse werden an MediaQueryList
-Objekte übermittelt:
change
-
Wird an die
MediaQueryList
gesendet, wenn sich das Ergebnis der Ausführung der Media Query gegen das Dokument ändert. Wenn zum Beispiel die Media Query(width >= 400px)
lautet, wird daschange
-Ereignis jedes Mal ausgelöst, wenn sich die Breite des Ansichtsfensters des Dokuments ändert, sodass seine Breite über die 400px-Grenze in beide Richtungen überschreitet.
Beispiele
Dieses Beispiel erstellt eine MediaQueryList
und richtet dann einen Listener ein, um zu erkennen, wann sich der Status der Media Query ändert, und führt bei Änderung eine benutzerdefinierte Funktion aus, um das Erscheinungsbild der Seite zu ändern.
const para = document.querySelector("p");
const mql = window.matchMedia("(width <= 600px)");
function screenTest(e) {
if (e.matches) {
/* the viewport is 600 pixels wide or less */
para.textContent = "This is a narrow screen — less than 600px wide.";
document.body.style.backgroundColor = "red";
} else {
/* the viewport is more than 600 pixels wide */
para.textContent = "This is a wide screen — more than 600px wide.";
document.body.style.backgroundColor = "blue";
}
}
mql.addEventListener("change", screenTest);
Hinweis: Sie können dieses Beispiel auf GitHub finden (siehe den Quellcode, und sehen Sie es auch live laufen).
Sie können weitere Beispiele auf den einzelnen Seiten zu Eigenschaften und Methoden finden.
Spezifikationen
Specification |
---|
CSSOM View Module # the-mediaquerylist-interface |
Browser-Kompatibilität
Siehe auch
- Media Queries
- Media Queries aus Code heraus verwenden
window.matchMedia()
MediaQueryListEvent
- Der Artikel
Window.devicePixelRatio
enthält ebenfalls ein hilfreiches Beispiel