Spec-Zone.ru › CSS

@media

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Правило @media CSS at-rule может быть использовано для применения части таблицы стилей на основе результата одного или нескольких запросов медиа. С его помощью вы указываете запрос медиа и блок CSS, который применяется к документу только в том случае, если запрос медиа соответствует устройству, на котором отображается контент.

Примечание: В JavaScript правила, созданные с помощью @media , доступны с помощью интерфейса CSSMediaRule модели объектов CSS.

Попробовать

Синтаксис

Правило @media может быть расположено на верхнем уровне вашего кода или вложенным внутри любого другого условного правила.

/* At the top level of your code */
@media screen and (min-width: 900px) {
  article {
    padding: 1rem 3rem;
  }
}

/* Nested within another conditional at-rule */
@supports (display: flex) {
  @media screen and (min-width: 900px) {
    article {
      display: flex;
    }
  }
}

Подробное описание синтаксиса запросов медиа см. в Использование запросов медиа.

Описание

Запрос медиа включает <media-type>, <media-feature>s и логические операторы.

Типы медиа

<media-type> описывает общую категорию устройства. За исключением использования логического оператора only, тип медиа является необязательным, и тип all подразумевается.

all

Подходит для всех устройств.

print

Предназначено для печатных материалов и документов, просматриваемых на экране в режиме предварительного просмотра печати. (См. печатные медиа для получения информации о проблемах форматирования, характерных для этих форматов.)

screen

Предназначено в первую очередь для экранов.

Примечание: CSS2.1 и Media Queries 3 определяли несколько дополнительных типов медиа (tty, tv, projection, handheld, braille, embossed, и aural ), но они были устаревшими в Media Queries 4 и не должны использоваться.

Характеристики медиа

<media feature> описывает определенные характеристики агента пользователя, устройства вывода или среды. Выражения свойств медиа проверяют их наличие, значение или диапазон значений и являются полностью необязательными. Каждое выражение свойства медиа должно быть заключено в скобки.

any-hover

Разрешает ли любой доступный механизм ввода пользователю наведение курсора на элементы?

any-pointer

Является ли любой доступный механизм ввода указательным устройством и, если да, то насколько точным он является?

aspect-ratio

Соотношение ширины к высоте экрана.

color

Количество битов на каждый цветовой компонент устройства вывода или ноль, если устройство не цветное.

color-gamut

Приблизительный диапазон цветов, поддерживаемых агентом пользователя и устройством вывода.

color-index

Количество записей в таблице поиска цветов устройства вывода или ноль, если устройство не использует такую таблицу.

device-aspect-ratio

Соотношение ширины к высоте устройства вывода. Устарело в запросах медиа уровня 4.

device-height

Высота области отрисовки устройства вывода. Устарело в запросах медиа уровня 4.

device-width

Ширина области отрисовки устройства вывода. Устарело в запросах медиа уровня 4.

display-mode

Режим отображения приложения: например, режим полноэкранного или окна в окне. Добавлен в запросах медиа уровня 5.

dynamic-range

Сочетание яркости, контрастности и цветовой глубины, поддерживаемое агентом пользователя и устройством вывода. Добавлен в запросах медиа уровня 5.

forced-colors

Определяет, ограничивает ли агент пользователя цветовую палитру. Добавлен в запросах медиа уровня 5.

grid

Использует ли устройство сетку или растровый экран?

height

Высота области просмотра.

hover

Разрешает ли основной механизм ввода пользователю наведение курсора на элементы?

inverted-colors

Инвертирует ли агент пользователя или основная операционная система цвета? Добавлен в запросах медиа уровня 5.

monochrome

Биты на пиксель в монохромном буфере кадра устройства вывода или ноль, если устройство не монохромное.

orientation

Ориентация области просмотра.

overflow-block

Как устройство вывода обрабатывает контент, который выходит за пределы области просмотра по оси блока?

overflow-inline

Можно ли прокрутить контент, который выходит за пределы области просмотра по оси вставки?

pointer

Является ли основной механизм ввода указательным устройством и, если да, то насколько точным он является?

prefers-color-scheme

Определяет, предпочитает ли пользователь светлую или темную цветовую схему. Добавлен в запросах медиа уровня 5.

prefers-contrast

Определяет, запросил ли пользователь увеличение или уменьшение контраста между смежными цветами. Добавлен в запросах медиа уровня 5.

prefers-reduced-data

Определяет, запросил ли пользователь веб-контент, который потребляет меньше трафика интернета.

prefers-reduced-motion

Пользователь предпочитает меньше движения на странице. Добавлен в запросах медиа уровня 5.

prefers-reduced-transparency

Определяет, включил ли пользователь на своем устройстве настройку для уменьшения эффектов прозрачности или полупрозрачности, используемых на устройстве.

resolution

Плотность пикселей устройства вывода.

scan

Является ли вывод изображения прогрессивным или чересстрочным.

scripting

Определяет, доступно ли скриптинговое выполнение (т. е. JavaScript). Добавлен в запросах медиа уровня 5.

shape

Определяет форму устройства для различения прямоугольных и круглых дисплеев.

update

С какой частотой устройство вывода может изменять внешний вид контента.

video-dynamic-range

Сочетание яркости, контрастности и цветовой глубины, поддерживаемое видеоплоскостью агента пользователя и устройством вывода. Добавлен в запросах медиа уровня 5.

width

Ширина области просмотра, включая ширину полосы прокрутки.

Логические операторы

Логические операторы not, and, only, и or могут использоваться для составления сложного запроса к медиа. Вы также можете объединить несколько запросов к медиа в одно правило, разделив их запятыми.

and

Используется для объединения нескольких свойств медиа в один запрос к медиа, требуя, чтобы каждое соединённое свойство возвращало true для того, чтобы запрос был true. Также используется для объединения свойств медиа с типами медиа.

not

Используется для отрицания запроса к медиа, возвращая true если бы в противном случае запрос возвращал false. Если он присутствует в списке запросов, разделённых запятыми, он будет отрицать только конкретный запрос, к которому он применяется.

Примечание: В Level 3 ключевое слово not не может использоваться для отрицания отдельного выражения свойства медиа, только всего запроса к медиа.

only

Применяет стиль только если весь запрос соответствует. Это полезно для предотвращения применения выбранных стилей в старых браузерах. Когда не используется only, старые браузеры интерпретировали бы запрос screen and (max-width: 500px) как screen, игнорируя остальную часть запроса и применяя его стили ко всем экранам. Если вы используете оператор only, вам также необходимо указать тип медиа.

, (запятая)

Запятые используются для объединения нескольких запросов к медиа в одно правило. Каждый запрос в списке, разделённом запятыми, рассматривается отдельно от других. Таким образом, если какой-либо из запросов в списке является true, всё утверждение медиа возвращает true. Другими словами, списки ведут себя как логический оператор or.

or

Эквивалентно оператору ,. Добавлен в Media Queries Level 4.

Указатели клиента агента пользователя

Некоторые запросы к медиа имеют соответствующие указатели клиента агента пользователя. Это HTTP-заголовки, которые запрашивают контент, предварительно оптимизированный для конкретных требований к медиа. Они включают Sec-CH-Prefers-Color-Scheme и Sec-CH-Prefers-Reduced-Motion.

Доступность

Для наилучшего обеспечения людей, которые изменяют размер текста сайта, используйте em, когда вам нужна <length> для ваших запросов к медиа.

И em, и px являются допустимыми единицами, но em работает лучше, если пользователь меняет размер текста браузера.

Также следует рассмотреть запросы к медиа или HTTP-указатели клиента агента пользователя для улучшения пользовательского опыта. Например, запрос к медиа prefers-reduced-motion или эквивалентный HTTP-заголовок Sec-CH-Prefers-Reduced-Motion могут быть использованы для минимизации количества анимации или движения, используемых в соответствии с предпочтениями пользователя.

Безопасность

Поскольку запросы к медиа предоставляют информацию о возможностях — и, следовательно, о функциях и дизайне — устройства, с которым работает пользователь, существует возможность их злоупотребления для построения "отпечатка пальца", который идентифицирует устройство или, по крайней мере, классифицирует его с такой степенью детализации, которая может быть нежелательной для пользователей.

Из-за этой потенциальной возможности браузер может выбрать искажение возвращаемых значений каким-либо образом, чтобы предотвратить их использование для точного идентификации компьютера. Браузер также может предложить дополнительные меры в этой области; например, если включена настройка Firefox «Предотвратить отслеживание», многие запросы к медиа сообщают значения по умолчанию, а не значения, представляющие фактическое состояние устройства.

Формальный синтаксис

@media = 
@media <media-query-list> { <rule-list> }

Примеры

Проверка типов медиа печати и экрана

@media print {
  body {
    font-size: 10pt;
  }
}

@media screen {
  body {
    font-size: 13px;
  }
}

@media screen, print {
  body {
    line-height: 1.2;
  }
}

@media only screen and (min-width: 320px) and (max-width: 480px) and (resolution: 150dpi) {
  body {
    line-height: 1.4;
  }
}

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

@media (height > 600px) {
  body {
    line-height: 1.4;
  }
}

@media (400px <= width <= 700px) {
  body {
    line-height: 1.4;
  }
}

Дополнительные примеры см. в разделе Использование запросов к медиа.

Спецификации

Спецификация
Media Queries Level 4
# media-descriptor-table
CSS Conditional Rules Module Level 3
# at-media

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet WebView Android
-moz-device-pixel-ratio Нет Нет 4 Нет Нет Нет 4 Нет Нет Нет Нет
-webkit-animation 2–36 Нет Нет 15–23 4 18–36 Нет 14–24 3.2 1.0–3.0 2–37
-webkit-device-pixel-ratio 1 12
63Реализовано как псевдоним для -moz-device-pixel-ratio.
15 3 18
63Реализовано как псевдоним для -moz-device-pixel-ratio.
14 1 1.0 ≤37
-webkit-max-device-pixel-ratio 1 12
63Реализовано как псевдоним для max--moz-device-pixel-ratio.
15 3 18
63Реализовано как псевдоним для max--moz-device-pixel-ratio.
14 1 1.0 ≤37
-webkit-min-device-pixel-ratio 1 12
63Реализовано как псевдоним для min--moz-device-pixel-ratio.
15 3 18
63Реализовано как псевдоним для min--moz-device-pixel-ratio.
14 1 1.0 ≤37
-webkit-transform-2d 2–36 Нет Нет 15–23 4 18–36 Нет 14–24 3.2 1.0–3.0 2–37
-webkit-transform-3d 2 12 49 15 4 18 49 14 3.2 1.0 4.4
-webkit-transition 2–36 Нет Нет 15–23 4 18–36 Нет 14–24 3.2 1.0–3.0 2–37
@media 1 12 1 9.2 3 18 4 10.1 1 1.0 ≤37
any-hover 41 16 64 28 9 41 64 28 9 5.0 41
any-pointer 41 12 64 28 9 41 64 28 9 4.0 41
aspect-ratio 3 12 3.5 10 5 18 4 10.1 4.2 1.0 ≤37
calc 66 79 59 53 12 66 59 47 12 9.0 66
color 1 12 2 10 3 18 4 10.1 1 1.0 ≤37
color-gamut 58 79 110 45 10 58 110 43 10 7.0 58
color-index 29 79 Нет 16 8 29 Нет 16 8 2.0 4.4
device-aspect-ratio 1 12 2 10 3 18 4 10.1 1 1.0 ≤37
device-height 1 12 2 10 3 18 4 10.1 1 1.0 ≤37
device-posture Нет Нет Нет Нет Нет Нет Нет Нет Нет 16.2 Нет
device-width 1 12 2 10 3 18 4 10.1 1 1.0 ≤37
display-mode 42 79
47Firefox 47 и более поздние версии поддерживают значения display-mode fullscreen и browser. В Firefox 57 добавлена поддержка значений minimal-ui и standalone.
29 13 42
47Поддерживает только значение browser, которое всегда возвращает true.
29 12.2 4.0 42
dynamic-range 98 98 100 84 13.1 98 100 68 13.4 18.0 98
forced-colors 89 79 89 75 16 89 89 63 16 15.0 89
grid 1 12 2 10 3 18 4 10.1 1 1.0 ≤37
height 1 12 2 10 3 18 4 10.1 1 1.0 ≤37
hover
38До Chrome 41, реализация была ошибочной и сообщала (hover: none) на компьютерах без сенсорного экрана с использованием мыши/трекпада. См. ошибка 40397980.
12 64
25До Opera 28, реализация была ошибочной и сообщала (hover: none) на компьютерах без сенсорного экрана с использованием мыши/трекпада. См. ошибка 40397980.
9 50 64 37 9 5.0 50
inverted-colors Нет Нет 114 Нет 9.1 Нет Нет Нет 10 Нет Нет
media_features 1 12 1 9.2 3 18 4 10.1 1 1.0 4.4
media_query_values 66 79 59 53 Нет 66 59 47 Нет 9.0 66
monochrome 1 79 2 10 3 18 4 10.1 1 1.0 ≤37
nested-queries 26 12 11 12.1 7 26 14 12.1 7 1.5 4.4
or_syntax 104 104 64 90 16.4 104 64 71 16.4 20.0 104
orientation 3 12 2 10.6 5 18 4 11 4.2 1.0 ≤37
overflow-block 113 113 66 99 17 113 66 76 17 23.0 113
overflow-inline 113 113 66 99 17 113 66 76 17 23.0 113
pointer 41 12 64 28 9 50 64 28 9 5.0 41
prefers-color-scheme 76 79 67 62 12.1 76 67 54 13 14.2 76
prefers-contrast 96 96 101 82 14.1 96 101 Нет 14.5 17.0 96
prefers-reduced-data 85 85 Нет 71 Нет 85 Нет Нет Нет Нет Нет
prefers-reduced-motion 74 79 63 62 10.1 74 64 53 10.3 11.0 74
prefers-reduced-transparency 118 118 113 104 Нет 118 Нет 79 Нет 25.0 118
range_syntax 104 104 102
63Поддерживаются только обозначения диапазона, где имя функции идёт перед любым значением (width > 500px)
90 16.4 104 102
63Поддерживаются только обозначения диапазона, где имя функции идёт перед любым значением (width > 500px)
71 16.4 20.0 104
resolution 29 12 8
3.5Поддерживает только значения <integer>.
1610–15 16 29 8
4Поддерживает только значения <integer>.
1610.1–14 16 2.0 4.4
scripting 120 120 113 106 17 120 113 80 17 25.0 120
update 113 113 102 99 17 113 102 76 17 23.0 113
video-dynamic-range 98 98 100 84 Нет 98 100 Нет Нет Нет Нет
width 1 12 2 10 3 18 4 10.1 1 1.0 ≤37

См. также

  • Модуль CSS media queries
  • Использование media queries
  • CSSMediaRule интерфейс
  • Расширенные средства Mozilla media features
  • Расширенные средства WebKit media features

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/@media

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API