#javascript #media-queries
#javascript #медиа-запросы
Вопрос:
У меня возникла проблема с тем, чтобы мой сайт отвечал на диапазон запросов matchMedia с использованием media.Совпадение.
Обновления на основе комментариев: мне нужно использовать match.Медиа вместо медиа-запросов CSS, потому что мне нужно проверить, присутствует ли компонент, и если true, то мне нужно добавить класс к другому элементу, если размер браузера составляет от 1400 до 1800 пикселей. Кроме того, мне нужно, чтобы это срабатывало каждый раз при изменении размера браузера.
Для устранения неполадок я попытался:
- Использование одного matchMedia(‘(минимальная ширина: 1400 пикселей) и (максимальная ширина: 1800 пикселей)’)
- Выполняем одно совпадение (используя только минимальную ширину: 1400 пикселей), и это успешно. Однако, когда я добавляю в свою 2-ю переменную ‘mq.Max’ и ‘и оператор’, все это завершается неудачей.
- Я прочитал MDN и до сих пор не вижу, как это реализовать.
JS ниже, спасибо за любые предложения, которые у вас могут быть.
if (jQuery('.jump-nav').length) {
// Create a condition that targets viewports at least 770px wide
window.onresize = function (event) {
console.log(event);
var mqMin = window.matchMedia('(min-width: 1400px)');
var mqMax = window.matchMedia('(max-width: 1800px)');
// check if media query matches@media (min-width: 30em) and (orientation: landscape)
if (mqMin.matches amp;amp; mqMax.matches) {
console.log('Media Query Matched!')
// add css class for desktop
$('.rowComponent').addClass('jn-rowchange');
} else {
// remove css class if not desktop
$('.rowComponent').removeClass('jn-rowchange');
}
};
}
Комментарии:
1. Почему бы не объединить
mqMin
иmqMax
?matchMedia('(min-width: 1400px) and (max-width: 1800px)')
2. Следовало указать, что я пробовал это … обновляя это сейчас
3. Вы также воссоздаете запросы каждый раз, когда изменяется размер окна. Создайте их снаружи, затем проверьте совпадения внутри.
4. В зависимости от того, почему вы это делаете, вы можете просто использовать CSS вместо этого. Итак, если речь идет просто о стилизации, у вас может быть свой медиа-запрос CSS для этого размера, а в запросе есть CSS, подобный
.rowComponent.jn-rowchange{}
etc..
Ответ №1:
Это то, что сработало для меня!
let mqMin = window.matchMedia("(min-width: 768px)");
let mqMax = window.matchMedia("(max-width: 960px)");
window.onresize = function () {
if (mqMin.matches amp;amp; mqMax.matches) {
console.log("Inside Query parameter!");
} else {
console.log("Outside Query parameter!");
}
};