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
by calling matchMedia()
on the 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.
Properties
The MediaQueryList
interface inherits properties from its parent interface, EventTarget
.
matches
Read only- A
Boolean
that returnstrue
if thedocument
currently matches the media query list, orfalse
if not. media
Read only- A
DOMString
representing a serialized media query.
Methods
The MediaQueryList
interface inherits methods from its parent interface, EventTarget
.
addListener()
- Adds to the
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 useaddEventListener()
to watch for thechange
event. removeListener()
- Removes the specified listener callback from the callbacks to be invoked when the
MediaQueryList
changes media query status, which happens any time the document switches between matching and not matching the media queries listed in theMediaQueryList
. This method has been kept for backward compatibility; if possible, you should generally useremoveEventListener()
to remove change notification callbacks (which should have previously been added usingaddEventListener()
).
Events
The following events are delivered to MediaQueryList
objects:
change
- Sent to the
MediaQueryList
when the result of running the media query against the document changes. For example, if the media query is(min-width: 400px)
, thechange
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. Also available using theonchange
event handler property.
Examples
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);
Note: You can find this example on GitHub (see the source code, and also see it [[../../../../../../mdn.github.io/dom-examples/mediaquerylist/index|running live]]).
You can find other examples on the individual property and method pages.
Specifications
Specification | Status | Comment |
---|---|---|
CSS Object Model (CSSOM) View ModuleThe definition of 'MediaQueryList' in that specification. | Working Draft | Initial definition |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
MediaQueryList
|
Chrome
Full support 9 |
Edge
Full support 12 |
Firefox
Full support 6 |
IE
Full support 10 |
Opera
Full support 12.1 |
Safari Full support 5.1 Full support 5.1 Notes' Prior to Safari 14, |
WebView Android
Full support Yes |
Chrome Android
Full support 18 |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS Full support 5 Full support 5 Notes' Prior to Safari 14, |
Samsung Internet Android
Full support 1.0 |
EventListener objects as parameters
|
Chrome
Full support 45 |
Edge
Full support ≤79 |
Firefox
Full support 55 |
IE
No support No |
Opera
No support No |
Safari
? |
WebView Android
Full support 45 |
Chrome Android
Full support 45 |
Firefox Android
Full support 55 |
Opera Android
No support No |
Safari iOS
? |
Samsung Internet Android
Full support 5.0 |
MediaQueryList inherits EventTarget
|
Chrome
Full support 45 |
Edge
Full support 16 |
Firefox
Full support 55 |
IE
No support No |
Opera
Full support Yes |
Safari
No support No |
WebView Android
Full support 45 |
Chrome Android
Full support 45 |
Firefox Android
Full support 55 |
Opera Android
Full support Yes |
Safari iOS
No support No |
Samsung Internet Android
Full support 5.0 |
addListener()
|
Chrome
Full support 9 |
Edge
Full support 12 |
Firefox
Full support 6 |
IE
Full support 10 |
Opera
Full support 12.1 |
Safari Full support 5.1 Full support 5.1 Notes' Prior to Safari 14, |
WebView Android
Full support Yes |
Chrome Android
Full support 18 |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS Full support 5 Full support 5 Notes' Prior to Safari 14, |
Samsung Internet Android
Full support 1.0 |
matches
|
Chrome
Full support 9 |
Edge
Full support 12 |
Firefox
Full support 6 |
IE
Full support 10 |
Opera
Full support 12.1 |
Safari
Full support 5.1 |
WebView Android
Full support Yes |
Chrome Android
Full support 18 |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS
Full support 5 |
Samsung Internet Android
Full support 1.0 |
media
|
Chrome
Full support 9 |
Edge
Full support 12 |
Firefox
Full support 6 |
IE
Full support 10 |
Opera
Full support 12.1 |
Safari
Full support 5.1 |
WebView Android
Full support Yes |
Chrome Android
Full support 18 |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS
Full support 5 |
Samsung Internet Android
Full support 1.0 |
onchange
|
Chrome
Full support 45 |
Edge
Full support ≤79 |
Firefox
Full support 55 |
IE
No support No |
Opera
Full support Yes |
Safari
Full support 14 |
WebView Android
Full support 45 |
Chrome Android
Full support 45 |
Firefox Android
Full support 55 |
Opera Android
Full support Yes |
Safari iOS
Full support 14 |
Samsung Internet Android
Full support 5.0 |
removeListener()
|
Chrome
Full support 9 |
Edge
Full support 12 |
Firefox
Full support 6 |
IE
Full support 10 |
Opera
Full support 12.1 |
Safari Full support 5.1 Full support 5.1 Notes' Prior to Safari 14, |
WebView Android
Full support Yes |
Chrome Android
Full support 18 |
Firefox Android
Full support Yes |
Opera Android
Full support Yes |
Safari iOS Full support 5 Full support 5 Notes' Prior to Safari 14, |
Samsung Internet Android
Full support 1.0 |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
- See implementation notes.'
- See implementation notes.
See also
- Media queries
- Using media queries from code
window.matchMedia()
MediaQueryListEvent
- The article
Window.devicePixelRatio
also has a useful example
MediaQueryList by Mozilla Contributors is licensed under CC-BY-SA 2.5.