Медиа-запросы — это функция CSS 3, позволяющая адаптировать рендеринг контента к различным условиям, таким как разрешение экрана (например, размер экрана мобильного устройства и настольного компьютера). Он стал рекомендуемым стандартом W3C в июне 2012 года [1] и является краеугольным камнем технологии адаптивного веб-дизайна (RWD).
Медиа-запросы были впервые набросаны в первоначальном предложении CSS Хокона Виума Ли в 1994 году, [2] но они не стали частью CSS 1. Рекомендация HTML4 от 1997 года показывает пример того, как медиа-запросы могут быть добавлены в будущем. [3] В 2000 году W3C начал работу над медиа-запросами, а также над другой схемой поддержки различных устройств: CC/PP . Эти две схемы решают одну и ту же проблему, но CC/PP ориентирован на сервер, в то время как медиа-запросы ориентированы на браузер. [4] Первый публичный рабочий проект для медиа-запросов был опубликован в 2001 году. [5] Медиа-запросы уровня 3, опубликованные в качестве рекомендации-кандидата 27 июля 2010 года, стали рекомендацией W3C 19 июня 2012 года. Предлагаемые исправления были опубликованы 5 апреля 2022 года. [6]
Media Queries Level 4, опубликованный в качестве рабочего проекта 9 мая 2017 года, был проектом рекомендации W3C Candidate по состоянию на 25 декабря 2021 года. [7]
Медиа-запрос состоит из типа носителя и одного или нескольких выражений, включающих медиа-функции , которые разрешаются как истинные или ложные. Результат запроса истинен, если тип носителя, указанный в медиа-запросе, соответствует типу устройства, на котором отображается документ, и все выражения в медиа-запросе истинны. Когда медиа-запрос истинен, соответствующая таблица стилей или правила стилей применяются в соответствии с обычными каскадными правилами. [8] [9]
Медиа-запросы используют CSS "at-rule".@media
Ниже приведены примеры медиазапросов CSS:
@ media screen and ( display-mode : fullscreen ) { /* Код здесь применяется только к экранам в полноэкранном режиме */ }
@ media all and ( orientation : landscape ) { /* Код здесь применяется только в альбомной ориентации */ }
@ media screen and ( min-device-width : 500px ) { /* Код здесь применим только к экранам шириной не менее 500 пикселей */ }
Тип носителя может быть объявлен в заголовке HTML- документа с помощью атрибута "media" внутри элемента . Значение атрибута "media" указывает, на каком устройстве будет отображаться связанный документ. [10] Типы носителя также могут быть объявлены в инструкциях по обработке XML , at-rule и at-rule. CSS 2 определяет следующие типы носителя: [11]<link>
@import
@media
Тип носителя «все» также может использоваться для указания того, что таблица стилей применяется ко всем типам носителей. [12]
В следующей таблице приведены медиа-функции, перечисленные в последней рекомендации W3C для медиа-запросов от 6 июня 2007 г. [13]
Особенность | Ценить | Мин/Макс | Описание |
---|---|---|---|
color | целое число | Да | Количество бит на цветовой компонент |
color-index | целое число | Да | Количество записей в таблице соответствия цветов |
device-aspect-ratio | целое число/целое число | Да | Соотношение сторон |
device-height | длина | Да | Высота выходного устройства |
device-width | длина | Да | Ширина выходного устройства |
grid | целое число | Нет | Верно для устройства на основе сетки |
height | длина | Да | Высота поверхности рендеринга |
monochrome | целое число | Да | Количество бит на пиксель в монохромном буфере кадра |
orientation | «портрет» или «пейзаж» | Нет | Ориентация экрана |
resolution | разрешение («dpi», «dpcm» или «dppx») | Да | Разрешение |
scan | «прогрессивный» или «чересстрочный» | Нет | Процесс сканирования типов медиа "tv" |
width | длина | Да | Ширина поверхности рендеринга |