MediaQueryList
MediaQueryList 物件儲存應用於文件的媒體查詢資訊,並支援針對文件狀態的即時匹配和事件驅動匹配。
您可以透過呼叫 matchMedia() 在 window 物件上來建立 MediaQueryList。生成的物件會處理在媒體查詢狀態改變時(即媒體查詢測試開始或停止評估為 true 時)向監聽器傳送通知。
這對於響應式設計非常有用,因為它允許觀察文件以檢測媒體查詢何時發生變化,而不是定期輪詢值,並允許您根據媒體查詢狀態以程式設計方式更改文件。
例項屬性
MediaQueryList 介面繼承了其父介面 EventTarget 的屬性。
例項方法
MediaQueryList 介面繼承了其父介面 EventTarget 的方法。
addListener()已棄用-
將一個回撥函式新增到
MediaQueryList中,該回調函式會在媒體查詢狀態(文件是否匹配列表中的媒體查詢)改變時被呼叫。此方法主要用於向後相容;如果可能,您應該改用addEventListener()來監聽change事件。 removeListener()已棄用-
從
MediaQueryList的回撥列表中移除指定的監聽器回撥函式。當MediaQueryList更改媒體查詢狀態時(即文件在匹配和不匹配MediaQueryList中列出的媒體查詢之間切換時),就會呼叫這些回撥函式。此方法已保留用於向後相容;如果可能,您通常應該使用removeEventListener()來移除更改通知回撥(這些回撥應該先前已使用addEventListener()新增)。
事件
以下事件會傳遞給 MediaQueryList 物件:
示例
此示例建立了一個 MediaQueryList,然後設定了一個監聽器來檢測媒體查詢狀態何時改變,並在狀態改變時執行一個自定義函式來改變頁面的外觀。
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);
您可以在各個屬性和方法頁面找到其他示例。
規範
| 規範 |
|---|
| CSSOM 檢視模組 # the-mediaquerylist-interface |
瀏覽器相容性
載入中…