6

CSS медиазапросы: max-width ИЛИ max-height

11

Заголовок: Как задать несколько условий с логикой "ИЛИ" в медиа-запросах CSS?

Описание проблемы:
Я пытаюсь написать медиа-запрос в CSS и столкнулся с проблемой: необходимо указать несколько условий, использующих логику "ИЛИ". Например, я хочу задать стили для экранов, где ширина меньше 995 пикселей ИЛИ высота меньше 700 пикселей. Вот мой текущий код:

/* Это не работает */
@media screen and (max-width: 995px OR max-height: 700px) {
  ...
}

Однако, такой синтаксис не срабатывает. Как правильно реализовать логику "ИЛИ" в медиа-запросах? Буду признателен за помощь!

3 ответ(ов)

11

Кома используется для указания двух (или более) различных правил:

@media screen and (max-width: 995px), 
       screen and (max-height: 700px) {
  ...
}

Согласно документации MDN, запятые служат для объединения нескольких медиа-запросов в одно правило. Каждый запрос в списке, разделенном запятыми, воспринимается отдельно от других. Таким образом, если один из запросов в списке истинён, то всё условие медиа-запроса считается истинным. Иными словами, списки ведут себя как логический оператор "ИЛИ".

0

Существует два подхода к написанию медиа-запросов в CSS. Если вы используете подход "от большего к меньшему" (desktop-first), то правильный способ написания будет следующим:

@media only screen 
and (min-width : 415px){
    /* Стили для устройств с шириной >= 415px */
}

@media only screen 
and (min-width : 769px){
    /* Стили для устройств с шириной >= 769px */
}

@media only screen 
and (min-width : 992px){
    /* Стили для устройств с шириной >= 992px */
}

Если же вы предпочитаете подход "от меньшего к большему" (mobile-first), то ваши медиа-запросы могут выглядеть так:

@media only screen 
and (max-width : 991px){
    /* Стили для устройств с шириной <= 991px */
}

@media only screen 
and (max-width : 768px){
    /* Стили для устройств с шириной <= 768px */
}

@media only screen 
and (max-width : 414px){
    /* Стили для устройств с шириной <= 414px */
}

Выбор подхода зависит от вашей стратегии разработки и того, какие устройства вы хотите поддерживать в первую очередь.

0

Да, вы можете использовать and для создания комбинированных медиазапросов, как показано в следующем примере:

@media screen and (max-width: 800px), 
       screen and (max-height: 600px) {
  ...
}

В этом коде условия объединяются с помощью запятой, что позволяет применять стили как для максимальной ширины экрана, так и для максимальной высоты экрана. Таким образом, стили внутри блока будут применены, если выполняется хотя бы одно из условий.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь