
Обратите внимание, что API, написанный в этом посте, находится в черновом состоянии, и в будущем он может измениться.
Использование медиазапросов в JavaScript
Итак, вы хотите использовать медиа-запросы в вашем коде JavaScript.
Первое, что нужно знать, это новый объект MediaQueryList . Объект MediaQueryList представляет собой список всех медиазапросов к объекту документа. Объект MediaQueryList отправляет уведомления зарегистрированным слушателям, когда медиа-запросы к документу изменяют свое состояние. Объект MediaQueryList включает в себя две функции, которые добавляют и удаляют прослушиватели: addListener и removeListener . Вот пример добавления слушателя событий:
mql.addListener(handleScreenChange);
Он также включает в себя два свойства:
- совпадения : возвращает истину, если документ соответствует списку медиазапросов, в противном случае — ложь.
 - media : список медиа-запросов, хранящийся в объекте MediaQueryList .
 
Для того , чтобы получить MediaQueryList объект , который нужно использовать matchMedia функцию. Функция matchMedia получает строку медиа-запроса и возвращает объект MediaQueryList . Затем вы можете использовать свойство совпадений, чтобы проверить результат запроса или добавить прослушиватели событий для обработки изменений медиазапросов. В следующем примере показан скрипт, который используется для записи изменений экрана консоли:
(function () {           
    function resize() {
        if (window.matchMedia('only screen and (max-width: 320px)').matches) {
            console.log('under 320 pixels');                    
        } else if (window.matchMedia('only screen and (min-width: 321px) and ' +
                                     '(max-width: 1024px)').matches) {
            console.log('between 320 and 1024 pixels');                    
        } else {
            console.log('higher than 1024 pixels');                    
        }
    }
 
    window.addEventListener('resize', resize, false);
    resize();
}());
В этом примере я регистрируюсь на событие изменения размера окна . Когда происходит изменение размера окна, выполняется проверка различных медиазапросов, и соответствующее сообщение записывается на консоль. Вы можете избежать регистрации в событии resize, если добавите прослушиватель в список медиазапросов:
(function () {
            function resize() {
                var mql = window.matchMedia('only screen and (max-width: 320px)').addListener(function () {
                    console.log('under 320 pixels');
                });
                var mql1 = window.matchMedia('only screen and (min-width: 321px) and ' +
                                             '(max-width: 1024px)').addListener(function () {
                                                 console.log('between 320 and 1024 pixels');
                                             });
                var mql2 = window.matchMedia('only screen and (min-width: 1025px)').addListener(function () {
                    console.log('higher than 1024 pixels');
                });
            }
            
            resize();
        }());
Обратите внимание на использование removeListener, когда вам не нужно получать уведомления, когда происходят проверки медиа-запросов.
Поддержка API JavaScript медиазапроса доступна в Chrome версии 9, Firefox версии 6, IE10 и Safari версии 5.1. Opera не поддерживает этот API в настоящее время.
Резюме
Медиа-запросы помогают поддерживать адаптивный дизайн, который реагирует на различные медиа. Если вы хотите использовать медиа — запросы из JavaScript вы можете использовать MediaQueryList объект и matchMedia функцию.