CSS, определяющий активный медиа-запрос
В Javascript есть прямой способ (не связанный с разбором кода css), чтобы определить, какой медиа-запрос активен?
Например, у меня есть два запроса:
@media screen and (max-width:800px)
@media screen and (min-width:801px)
без разбора и просмотра clientWidth, как я могу определить, какой из них был оценен как true.
Ответы
Ответ 1
Несмотря на то, что это старый вопрос, он высоко оценивает, когда ищет эту проблему.
Window.matchMedia является официальным и поддерживается всех основных браузеров (IE10 +) и позволит вам запрашивать, если в настоящий момент соответствует определенный медиа-запрос.
Из исходного вопроса:
if (window.matchMedia('screen and (max-width:800px)').matches) {
// it matches
} else {
// does not match
}
Вы также можете прослушать, когда результат соответствия результатов изменится, связав прослушиватель событий с MediaQueryList, который возвращает window.matchMedia
:
var mql = window.matchMedia('screen and (max-width:800px)');
mql.addEventListener(
function(mq) {
if (mq.matches) {
// it matches
} else {
// does not match
}
}
);
Ответ 2
Paul Irish MatchMedia может сделать трюк:
https://github.com/paulirish/matchMedia.js
Будет ли это соответствовать тому, что вы пытаетесь сделать?
Ответ 3
Чтобы увидеть, как разные медиа-запросы реагируют на изменение размера или ориентацию, попробуйте демонстрацию на этой странице:
http://www.jensbits.com/2011/04/20/media-query-playground-rotate-resize-rinse-repeat/
Вы можете настроить атрибуты медиа-запроса, чтобы понять, как они влияют на страницу.
Ответ 4
Привет, и я надеюсь, что это поможет, фактически добавление класса в селектор, и я работаю с этим инструментом: https://hacks.mozilla.org/2012/06/using-window-matchmedia-to-do-media-queries-in-javascript/
на самом деле, у них есть ясный пример того, что включено в окне с измененным размером здесь
http://robnyman.github.io/matchmedia/
в моем случае я просто выполняю определенную задачу, когда я на конкретном размере, который вы можете использовать с помощью функции.
Ответ 5
Я не уверен, как вы узнаете, какой медиа-запрос активен, но...
... не можете ли вы просто проверить ширину экрана с помощью javascript?
if ( window.innerWidth >= 801 ) {
// @media screen and (min-width:801px)
} else {
// @media screen and (max-width:800px
}
или, что мне здесь не хватает?