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 |
浏览器兼容性
加载中…