定义和用法
matchMedia() 返回一个新的 MediaQueryList 对象,表示指定的媒体查询字符串解析后的结果。
matchMedia() 方法的值可以是任何一个 CSS @media 规则 的特性, 如 min-height, min-width, orientation 等。
MediaQueryList 对象有以下两个属性:
- media:查询语句的内容。
- matches:用于检测查询结果,如果文档匹配 media query 列表,值为 true,否则为 false。
MediaQueryList 对象还可以监听事件。通过监听,在查询结果发生变化时,就调用指定的回调函数。
方法 | 描述 |
---|---|
addListener(functionref) | 添加一个新的监听器函数,该函数在媒体查询的结果发生变化时执行。 |
removeListener(functionref) | 从媒体查询列表中删除之前添加的监听器。 如果指定的监听器不在列表中,则不执行任何操作。 |
语法
window.matchMedia(mediaQueryString)
参数说明:
- mediaQueryString: 必需,一个字符串,表示即将返回一个新 MediaQueryList 对象的媒体查询。
返回值返回 MediaQueryList 对象。
所有主要浏览器都支持 matchMedia() 方法
实例
DEMO1:判断屏幕(screen/viewport)窗口大小。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <body> <p>判断屏幕(screen/viewport)窗口大小。</p> <button onclick="myFunction()">点我</button> <p id="demo"></p> <script> function myFunction() { var x = document.getElementById("demo"); if (window.matchMedia("(max-width: 700px)").matches) { x.innerHTML = "窗口小于或等于 700 像素"; } else { x.innerHTML = "窗口大于 700 像素"; } } </script> </body> </html>
DEMO2:判断屏幕(screen/viewport)窗口大小,在小于等于 700 像素时修改背景颜色为黄色,大于 700 像素时修改背景颜色为粉红色。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Web176教程(Web176.com)</title> </head> <body> <p>判断屏幕(screen/viewport)窗口大小,在小于等于 700 像素时修改背景颜色为黄色,大于 700 像素时修改背景颜色为粉红色。</p> <p>重置浏览器大小查看效果。</p> <script> function myFunction(x) { if (x.matches) { // 媒体查询 document.body.style.backgroundColor = "yellow"; } else { document.body.style.backgroundColor = "pink"; } } var x = window.matchMedia("(max-width: 700px)") myFunction(x) // 执行时调用的监听函数 x.addListener(myFunction) // 状态改变时添加监听器 </script> </body> </html>
作者:terry,如若转载,请注明出处:https://www.web176.com/javascriptbook/brtips/3710.html