CSS медиазапросы: max-width ИЛИ max-height
Заголовок: Как задать несколько условий с логикой "ИЛИ" в медиа-запросах CSS?
Описание проблемы:
Я пытаюсь написать медиа-запрос в CSS и столкнулся с проблемой: необходимо указать несколько условий, использующих логику "ИЛИ". Например, я хочу задать стили для экранов, где ширина меньше 995 пикселей ИЛИ высота меньше 700 пикселей. Вот мой текущий код:
/* Это не работает */
@media screen and (max-width: 995px OR max-height: 700px) {
...
}
Однако, такой синтаксис не срабатывает. Как правильно реализовать логику "ИЛИ" в медиа-запросах? Буду признателен за помощь!
3 ответ(ов)
Кома используется для указания двух (или более) различных правил:
@media screen and (max-width: 995px),
screen and (max-height: 700px) {
...
}
Согласно документации MDN, запятые служат для объединения нескольких медиа-запросов в одно правило. Каждый запрос в списке, разделенном запятыми, воспринимается отдельно от других. Таким образом, если один из запросов в списке истинён, то всё условие медиа-запроса считается истинным. Иными словами, списки ведут себя как логический оператор "ИЛИ".
Существует два подхода к написанию медиа-запросов в 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 */
}
Выбор подхода зависит от вашей стратегии разработки и того, какие устройства вы хотите поддерживать в первую очередь.
Да, вы можете использовать and
для создания комбинированных медиазапросов, как показано в следующем примере:
@media screen and (max-width: 800px),
screen and (max-height: 600px) {
...
}
В этом коде условия объединяются с помощью запятой, что позволяет применять стили как для максимальной ширины экрана, так и для максимальной высоты экрана. Таким образом, стили внутри блока будут применены, если выполняется хотя бы одно из условий.
Медиа-запросы: Как нацелиться на десктоп, планшет и мобильные устройства?
Как расположить div внизу своего контейнера?
Как отключить перенос строк в HTML?
Установить фиксированную ширину столбца таблицы независимо от количества текста в ячейках?
Как сделать перенос строки с помощью CSS, не используя <br />?