Как объединить max-width, min-width в запросе matchMedia?

Я работаю с API matchMedia, чтобы определить области просмотра в javascript, поэтому я могу минимизировать количество манипуляций с dom.

Вместо того, чтобы использовать display: none везде я определяю, вставлены ли элементы в DOM или нет v-if директива от Vue.

Я настроил это так:

resize() {
    this.mobile = window.matchMedia('(max-width: 767px)').matches;
    this.tablet = window.matchMedia('(max-width: 767px)').matches;
    this.desktop = window.matchMedia('(min-width: 992px)').matches;
}

Мобильный запрос matchmedia хорош, но как мне точно определить размер планшета? Мне интересно, могу ли я объединить max-width а также min-width значения в запросе matchMedia.

Конечно, я мог бы сделать что-то вроде этого:

resize() {
    this.mobile = window.matchMedia('(max-width: 767px)').matches;
    this.desktop = window.matchMedia('(min-width: 992px)').matches;
    this.tablet = !this.mobile && !this.desktop;
}

Мне интересно, это все правильно настроено вот так.

1 ответ

Решение

Просто объедините медиазапросы, как в CSS:

this.tablet = window.matchMedia('(min-width:767px) and (max-width: 992px)');

Другие вопросы по тегам