A
MediaQueryList
object stores information on a
media query
applied to a document, with support for both immediate and event-driven matching against the state of the document.
You can create a
MediaQueryList
通过调用
matchMedia()
在
window
object. The resulting object handles sending notifications to listeners when the media query state changes (i.e. when the media query test starts or stops evaluating to
true
).
This is very useful for adaptive design, since this makes it possible to observe a document to detect when its media queries change, instead of polling the values periodically, and allows you to programmatically make changes to a document based on media query status.
MediaQueryList
interface inherits properties from its parent interface,
EventTarget
.
匹配
只读
布尔
that returns
true
若
document
currently matches the media query list, or
false
若不。
media
只读
DOMString
representing a serialized media query.
MediaQueryList
interface inherits methods from its parent interface,
EventTarget
.
addListener()
MediaQueryList
a callback which is invoked whenever the media query status—whether or not the document matches the media queries in the list—changes. This method exists primarily for backward compatibility; if possible, you should instead use
addEventListener()
to watch for the
change
事件。
removeListener()
MediaQueryList
changes media query status, which happens any time the document switches between matching and not matching the media queries listed in the
MediaQueryList
. This method has been kept for backward compatibility; if possible, you should generally use
removeEventListener()
to remove change notification callbacks (which should have previously been added using
addEventListener()
).
The following events are delivered to
MediaQueryList
对象:
change
MediaQueryList
when the result of running the media query against the document changes. For example, if the media query is
(min-width: 400px)
,
change
event is fired any time the width of the document's
viewport
changes such that its width moves across the 400px boundary in either direction.
onchange
event handler property.
This simple example creates a
MediaQueryList
and then sets up a listener to detect when the media query status changes, running a custom function when it does to change the appearence of the page.
var para = document.querySelector('p');
var mql = window.matchMedia('(max-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 than 600 pixels wide */
para.textContent = 'This is a wide screen — more than 600px wide.';
document.body.style.backgroundColor = 'blue';
}
}
mql.addEventListener('change', screenTest);
注意 : You can find this example on GitHub (see the 源代码 , and also see it running live ).
You can find other examples on the individual property and method pages.
| 规范 | 状态 | 注释 |
|---|---|---|
|
CSSOM (CSS 对象模型) 视图模块
The definition of 'MediaQueryList' in that specification. |
工作草案 | 初始定义 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
MediaQueryList
|
Chrome 9 | Edge 12 | Firefox 6 | IE 10 | Opera 12.1 |
Safari
5.1
|
WebView Android Yes | Chrome Android 18 | Firefox Android Yes | Opera Android Yes |
Safari iOS
5
|
Samsung Internet Android 1.0 |
EventListener
objects as parameters
|
Chrome 45 | Edge ≤79 | Firefox 55 | IE No | Opera No | Safari ? | WebView Android 45 | Chrome Android 45 | Firefox Android 55 | Opera Android No | Safari iOS ? | Samsung Internet Android 5.0 |
MediaQueryList
继承
EventTarget
|
Chrome 45 | Edge 16 | Firefox 55 | IE No | Opera Yes | Safari No | WebView Android 45 | Chrome Android 45 | Firefox Android 55 | Opera Android Yes | Safari iOS No | Samsung Internet Android 5.0 |
addListener()
|
Chrome 9 | Edge 12 | Firefox 6 | IE 10 | Opera 12.1 |
Safari
5.1
|
WebView Android Yes | Chrome Android 18 | Firefox Android Yes | Opera Android Yes |
Safari iOS
5
|
Samsung Internet Android 1.0 |
匹配
|
Chrome 9 | Edge 12 | Firefox 6 | IE 10 | Opera 12.1 | Safari 5.1 | WebView Android Yes | Chrome Android 18 | Firefox Android Yes | Opera Android Yes | Safari iOS 5 | Samsung Internet Android 1.0 |
media
|
Chrome 9 | Edge 12 | Firefox 6 | IE 10 | Opera 12.1 | Safari 5.1 | WebView Android Yes | Chrome Android 18 | Firefox Android Yes | Opera Android Yes | Safari iOS 5 | Samsung Internet Android 1.0 |
onchange
|
Chrome 45 | Edge ≤79 | Firefox 55 | IE No | Opera Yes | Safari No | WebView Android 45 | Chrome Android 45 | Firefox Android 55 | Opera Android Yes | Safari iOS No | Samsung Internet Android 5.0 |
removeListener()
|
Chrome 9 | Edge 12 | Firefox 6 | IE 10 | Opera 12.1 |
Safari
5.1
|
WebView Android Yes | Chrome Android 18 | Firefox Android Yes | Opera Android Yes |
Safari iOS
5
|
Samsung Internet Android 1.0 |
完整支持
不支持
兼容性未知
见实现注意事项。
window.matchMedia()
MediaQueryListListener
MediaQueryListEvent
Window.devicePixelRatio
also has a useful example
MediaQueryList
AnimationEvent
CSS
CSSConditionRule
CSSGroupingRule
CSSKeyframeRule
CSSKeyframesRule
CSSMediaRule
CSSNamespaceRule
CSSPageRule
CSSRule
CSSRuleList
CSSStyleDeclaration
CSSStyleRule
CSSStyleSheet
CSSSupportsRule
CaretPosition
LinkStyle
MediaQueryListListener
Screen
StyleSheet
StyleSheetList
TransitionEvent