This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
A MediaQueryList
object stores information on a media query applied to a document, and handles sending notifications to listeners when the media query state change (i.e. when the media query test starts or stops evaluating to true
).
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.
The new version of the MediaQueryList
interface inherits properties from its parent interface, EventTarget
.
MediaQueryList.matches
Read only
Boolean
that returns true
if the document
currently matches the media query list, or false
if not.MediaQueryList.media
Read only
DOMString
representing a serialized media query.MediaQueryList.onchange
change
event fires, i.e when the status of media query support changes. The event object is a MediaQueryListEvent
instance, which is recognised as a MediaListQuery
instance in older browsers, for backwards compatibility purposes.The new version of the MediaQueryList
interface inherits methods from its parent interface, EventTarget
.
MediaQueryList.addListener()
MediaQueryListener
that will run a custom callback function in response to the media query status changing. This is basically an alias for EventTarget.addEventListener()
, for backwards compatibility purposes.MediaQueryList.removeListener()
MediaQueryListener
. This is basically an alias for EventTarget.removeEventListener()
, for backwards compatibility purposes.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.addListener(screenTest);
Note: You can find this example on GitHub (see the source code, and also see it running live).
Specification | Status | Comment |
---|---|---|
CSS Object Model (CSSOM) View Module The definition of 'MediaQueryList' in that specification. | Working Draft | Initial definition |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 9 | Yes | 6 | 10 | 12.1 | 5 |
addListener |
9 | Yes | 6 | 10 | 12.1 | 5 |
matches |
9 | Yes | 6 | 10 | 12.1 | 5 |
media |
9 | Yes | 6 | 10 | 12.1 | 5 |
onchange |
Yes | ? | 55 | No | Yes | ? |
removeListener |
9 | Yes | 6 | 10 | 12.1 | 5 |
EventListener objects as parameters |
No | ? | 55 | No | No | ? |
MediaQueryList inheriting from EventTarget
|
Yes | 16 | 55 | No | Yes | Yes |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Yes | 18 | Yes | ? | ? | ? | ? |
addListener |
? | ? | Yes | ? | ? | ? | ? |
matches |
? | ? | Yes | ? | ? | ? | ? |
media |
? | ? | Yes | ? | ? | ? | ? |
onchange |
No | Yes | ? | 55 | Yes | ? | ? |
removeListener |
? | ? | Yes | ? | ? | ? | ? |
EventListener objects as parameters |
No | No | ? | 55 | No | ? | ? |
MediaQueryList inheriting from EventTarget
|
Yes | Yes | 16 | 55 | Yes | Yes | ? |
window.matchMedia()
MediaQueryListListener
MediaQueryListEvent
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList