@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 | 10263Поддерживаются только обозначения диапазона, где имя функции идёт перед любым значением(width > 500px) |
90 | 16.4 | 104 | 10263Поддерживаются только обозначения диапазона, где имя функции идёт перед любым значением(width > 500px) |
71 | 16.4 | 20.0 | 104 |
resolution |
29 | 12 | 83.5Поддерживает только значения<integer>. |
1610–15 | 16 | 29 | 84Поддерживает только значения<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 |
См. также
© 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