Media screen css max and min: CSS3-медиазапросы
Использование медиавыражений — CSS | MDN
Медиавыражения используются в тех случаях , когда нужно применить разные CSS-стили, для разных устройств по типу отображения (например: для принтера, монитора или смартфона), а также конкретных характеристик устройства (например: ширины окна просмотра браузера), или внешней среды (например: внешнее освещение). Учитывая огромное количество подключаемых к интернету устройств, медиавыражения являются очень важным инструментом при создании веб-сайтов и приложений, которые будут правильно работать на всех доступных устройствах, которые есть у ваших пользователей.
Медиавыражения позволяют адаптировать страницу для различных типов устройств, таких как: принтеры, речевых браузеров, устройств Брайля, телевизоров и так далее. Например это правило для принтеров:
Вы также можете писать правила сразу для нескольких устройств. Например этот @media написан сразу для экранов и принтеров:
@media screen, print { ... }
Список устройств вы можете найти перейдя по этой ссылке. Но для задания более детальных и узконаправленных правил вам нужно просмотреть следующий раздел.
Media features описывают некие характеристики определённого user agent, устройства вывода или окружения. Например, вы можете применить выбранные стили только для широкоэкранных мониторов, компьютеров с мышью, или для устройств, которые используются в условиях слабой освещённости. В примере ниже стили будут применены только когда основное устройство ввода пользователя (например мышь) будет расположено над элементами:
@media (hover: hover) { ... }
Многие медиавыражения представляют собой функцию диапазона и имеют префиксы «min-» или «max-«. Минимальное значение и максимальное значение условия, соответственно. Например этот CSS-код применяется только если ширина viewport меньше или равна 12450px:
@media (max-width: 12450px) { ... }
Если вы создаёте медиавыражение без указания значения, вложенные стили будут использоваться до тех пор, пока значение функции не равно нулю. Например, этот CSS будет применяться к любому устройству с цветным экраном:
Если функция не применима к устройству, на котором работает браузер, выражения, включающие эту функцию, всегда ложны. Например, стили, вложенные в следующий запрос, никогда не будут использоваться, потому что ни одно речевое устройство не имеет формат экрана:
@media speech and (aspect-ratio: 11/5) { ... }
Дополнительные примеры медиавыражений, смотрите на справочной странице для каждой конкретной функции.
Иногда вы хотите создать медиавыражение, включающее в себя несколько условий. В таком случае применяются логические операторы: not
, and
, and only
. Кроме того, вы можете объединить несколько медиавыражений в список через запятую; это позволяет применять одни и те же стили в разных ситуациях.
В прошлом примере мы видели, как применяется оператор and
для группировки type и функции. Оператор and
также может комбинировать несколько функций в одно медиавыражение. Между тем, оператор not отрицает медиавыражение, полностью инвертируя его значение. Оператор
Note: In most cases, the all
media type is used by default when no other type is specified. However, if you use the not
or only
operators, you must explicitly specify a media type.
and
The and
keyword combines a media feature with a media type or other media features. This example combines two media features to restrict styles to landscape-oriented devices with a width of at least 30 ems:
@media (min-width: 30em) and (orientation: landscape) { ... }
To limit the styles to devices with a screen, you can chain the media features to the screen
media type:
@media screen and (min-width: 30em) and (orientation: landscape) { ... }
comma-separated lists
You can use a comma-separated list to apply styles when the user’s device matches any one of various media types, features, or states. For instance, the following rule will apply its styles if the user’s device has either a minimum height of 680px or is a screen device in portrait mode:
@media (min-height: 680px), screen and (orientation: portrait) { ... }
Taking the above example, if the user had a printer with a page height of 800px, the media statement would return true because the first query would apply. Likewise, if the user were on a smartphone in portrait mode with a viewport height of 480px, the second query would apply and the media statement would still return true.
not
The not
keyword inverts the meaning of an entire media query. It will only negate the specific media query it is applied to. (Thus, it will not apply to every media query in a comma-separated list of media queries.) The not
keyword can’t be used to negate an individual feature query, only an entire media query. The not
is evaluated last in the following query:
@media not all and (monochrome) { ... }
… so that the above query is evaluated like this:
@media not (all and (monochrome)) { ... }
… rather than like this:
@media (not all) and (monochrome) { ... }
As another example, the following media query:
@media not screen and (color), print and (color) { ... }
… is evaluated like this:
@media (not (screen and (color))), print and (color) { ... }
only
The only
keyword prevents older browsers that do not support media queries with media features from applying the given styles.
<link rel="stylesheet" media="only screen and (color)" href="modern-styles.css" />
Медиа-запросы | htmlbook.ru
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS |
9.0+ | 1.0+ | 10.0+ | 4.0+ | 3.6+ | 2.0+ | 2.0+ |
Краткая информация
Версии CSS
Описание
Наряду с типами носителей в CSS3 включена поддержка различных технических параметров устройств, на основе которых требуется загружать те или иные стили. К примеру, можно определить смартфон с максимальным разрешением 640 пикселов и для него установить одни стилевые свойства, а для остальных устройств другие. Также можно выявить различные характеристики вроде наличия монохромного экрана, ориентации (портретная или альбомная) и др. Все характеристики легко комбинируются, поэтому допустимо задать стиль только для устройств в альбомной ориентации с заданным разрешением экрана.
Возможности медиа-запросов не ограничиваются выявлением мобильных устройств, с их помощью можно создавать адаптивный макет. Такой макет подстраивается под разрешение монитора и окна браузера, меняя при необходимости ширину макета, число колонок, размеры изображений и текста. Медиа-запросы ограничивают ширину макета и при достижении этого значения (к примеру за счёт уменьшения окна или при просмотре на устройстве с указанным размером) уже применяется другой стиль.
Синтаксис
Все запросы начинаются с правила @media, после чего следует условие, в котором используются типы носителей, логические операторы и медиа-функции. Типы носителей перечислены в табл. 1.
Тип | Описание |
---|---|
all | Все типы. Это значение используется по умолчанию. |
braille | Устройства, основанные на системе Брайля, которые предназначены для чтения слепыми людьми. |
embossed | Принтеры, использующие для печати систему Брайля. |
handheld | Смартфоны и аналогичные им аппараты. |
Принтеры и другие печатающие устройства. | |
projection | Проекторы. |
screen | Экран монитора. |
speech | Речевые синтезаторы, а также программы для воспроизведения текста вслух. Сюда, например, можно отнести речевые браузеры. |
tty | Устройства с фиксированным размером символов (телетайпы, терминалы, устройства с ограничениями дисплея). |
tv | Телевизоры. |
Логические операторы, применяемые в медиа-запросах
and
Логическое И. Указывается для объединения нескольких условий.
Пример. Стиль для всех цветных устройств
@media all and (color) { ... }
not
Логическое НЕ. Указывается для отрицания условия.
Пример. Стиль для всех устройств кроме смартфонов
@media all and (not handheld) { ... }
Оператор not имеет низкий приоритет и оценивается в запросе последним, поэтому выражение
@media not all and (color) { ... }
следует понимать как
@media not (all and (color)) { ... }
а не
@media (not all) and (color) { ... }
only
Применяется для старых браузеров, которые не поддерживают медиа-запросы.
Пример. Стиль для новых браузеров
@media only all and (not handheld) { ... }
В списке нет логического оператора ИЛИ, его роль выполняет запятая. Перечисление нескольких условий через запятую говорит о том, что если хотя бы одно условие выполняется, то стиль будет применён.
Пример. Стиль для устройств с альбомной ориентацией или минимальной шириной 480 пикселов.
@media all and (orientation: landscape), all and (min-width: 480px) { ... }
Также при использовании операторов следует указывать скобки, чтобы менять приоритет операций.
Медиа-функции
Медиа-функции задают технические характеристики устройства, на котором отображается документ. Стиль выполняется в том случае, если запрос возвращает истину, иными словами, указанные условия выполняются.
Большинство функций содержат приставку min- и max-, которая соответствуют минимальному и максимальному значению. Так, max-width: 400px означает, что ширина окна браузера меньше 400 пикселов, а min-width: 1000px, наоборот, сообщает, что ширина окна больше 1000 пикселов.
aspect-ratio (min-aspect-ratio, max-aspect-ratio)
Тип носителя: handheld, print, projection, screen, tty, tv
Значение: целое число/целое число
Определяет соотношение ширины и высоты отображаемой области устройства. Значение указывается в виде двух целых чисел разделяемых между собой слэшем (/).
color (min-color, max-color)
Тип носителя: handheld, print, projection, screen, tty, tv
Определяет число бит на канал цвета. К примеру, значение 3 означает, что красный, зелёный и синий канал могут отображать 23 цветов каждый, что в общем составляет 512 цветов (8×8×8). Если значение не указано, тогда проверяется что устройство цветное. В примере 1 показана такая проверка.
Пример 1. Стиль для цветных устройств
@media screen and (color) { /* Для цветных экранов */
body { background: #fc0; }
}
@media screen and (min-color:3) { /* Минимум 512 цветов */
body { background: #ccc; }
}
color-index (min-color-index, max-color-index)
Тип носителя: handheld, print, projection, screen, tty, tv
Значение: целое число
Определяет количество цветов, которое поддерживает устройство. В примере 2 показан стиль для экранов отображающих не меньше 256 цветов.
Пример 2. Цветной дисплей
@media all and (min-color-index: 256) {
...
}
device-aspect-ratio (min-device-aspect-ratio, max-device-aspect-ratio)
Тип носителя: handheld, print, projection, screen, tty, tv
Значение: целое число/целое число
Определяет соотношение сторон экрана устройства. Значение указывается в виде двух целых чисел разделяемых между собой слэшем (/). В примере 3 показано, как установить стиль для экранов с соотношением сторон 16:9 и более.
Пример 3. «Киношное» соотношение
@media screen and (min-device-aspect-ratio: 16/9) {
...
}
device-height (min-device-height, max-device-height)
Тип носителя: все кроме speech
Значение: размер
Определяет всю доступную высоту экрана устройства или печатной страницы.
device-width (min-device-width, max-device-width)
Тип носителя: все кроме speech
Значение: размер
Определяет всю доступную ширину экрана устройства или печатной страницы. В примере 4 в зависимости от разрешения монитора устанавливается ширина слоя. Так, для значения 1280 пикселов ширина макета задаётся как 1100px.
Пример 4. Ширина макета
HTML5CSS3IECrOpSaFx
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Ширина макета</title> <style> div { padding: 10px; background: #e8bfad; margin: auto; } @media screen and (min-device-width: 1600px) { div {width: 1500px;} } @media screen and (device-width: 1280px) { div {width: 1100px;} } @media screen and (device-width: 1024px) { div {width: 980px;} } </style> </head> <body> <div> Диабаз, формируя аномальные геохимические ряды, сменяет известняк, образуя на границе с Западно-Карельским поднятием своеобразную систему грабенов. </div> </body> </html>
grid
Тип носителя: all
Значение: нет
Определяет, что это устройство с фиксированным размером символов. Размеры букв на таком устройстве занимают одинаковую ширину и высоту и выстраиваются по заданной сетке. К подобным устройствам можно отнести терминалы, а также телефоны, которые поддерживают только один шрифт.
Если вам требуется форматировать текст, не указывайте его размер в пикселах, для подобных устройств используется единица em (пример 5).
Пример 5. Размер букв
HTML5CSS3IECrOpSaFx
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Стиль для бабушкофона</title>
<style>
@media handheld and (grid) and (max-width: 15em) {
body { font-size: 2em; }
}
</style>
</head>
<body>
<p>Привет! Как дела? Как сажа бела?</p>
</body>
</html>
height (min-height, max-height)
Тип носителя: все кроме speech
Значение: размер
Высота отображаемой области.
monochrome (min-monochrome, max-monochrome)
Тип носителя: handheld, print, projection, screen, tty, tv
Значение: целое число
Определяет, что устройство монохромное. Если указано число, то оно обозначает число бит на пиксел. Так, значение 8 равнозначно 256 оттенкам серого (или другого цвета). В примере 6 показан стиль для монохромного и цветного принтера.
Пример 6. Стиль для принтера
@media print and (monochrome) {
body { font-family: Times, 'Times New Roman', serif; }
h2, h3, p { color: black; }
}
@media print and (color) {
body { font-family: Arial, Verdana, sans-serif; }
h2, h3, p { color: #556b2f; }
}
orientation
Тип носителя: handheld, print, projection, screen, tty, tv
Значение: landscape | portrait
Определяет, что устройство находится в альбомном режиме (ширина больше высоты) или портретном (ширина меньше высоты).
В примере 7 устанавливается разная фоновая картинка в случае альбомной (landscape) или портретной ориентации (portrait).
Пример 7. Использование ориентации устройства
@media screen and (orientation: landscape) {
#logo { background: url(logo1.png) no-repeat; }
}
@media screen and (orientation: portrait) {
#logo { background: url(logo2.png) no-repeat; }
}
resolution (min-resolution, max-resolution)
Тип носителя: handheld, print, projection, screen, tv
Значение: разрешение в dpi (точек на дюйм) или dpcm (точек на сантиметр)
Определяет разрешение устройства, например, принтера. В примере 8 стиль будет работать для принтера с минимальным разрешением 300 точек на дюйм.
Пример 8. Разрешение принтера
@media print and (min-resolution: 300dpi) {
...
}
scan
Тип носителя: tv
Значение:
interlace | progressive
Определяет тип развертки телевизора — череcстрочная (interlace) или прогрессивная (progressive). При чересстрочной развёртке телевизор вначале показывает нечётные строки кадра, затем чётные, что позволяет сократить передаваемые данные. В прогрессивной развёртке кадр передаётся и показывается целиком.
width (min-width, max-width)
Тип носителя: все кроме speech
Значение: размер
Описывает ширину отображаемой области. Это может быть окно браузера или печатная страница. В примере 9 при уменьшении окна до 600 пикселов и меньше меняется цвет фона веб-страницы.
Пример 9. Использование max-width
HTML5CSS3IECrOpSaFx
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ширина страницы</title>
<style>
body { background: #f0f0f0; }
@media screen and (max-width: 600px) {
body { background: #fc0; }
}
</style>
</head>
<body>
<p>Пока магма остается в камере, мусковит сингонально поднимает шток,
в то время как значения максимумов изменяются в широких пределах. </p>
</body>
</html>
Выбираем медиа-запросы: min-width CSS или max-width CSS
Мне часто задают вопросы вроде: «Стоит ли использовать медиа-запросы (media queries) min-width или max width CSS? Те, кто знаком с адаптивным дизайном, сочтут этот вопрос странным, так как знают, что все зависит от конкретного случая. Сегодня я рад поделиться с вами собственным мнением о том, что на самом деле означает «зависит от конкретного случая».
Большая часть разработчиков до сих пор ориентируется только на пользователей ПК. Часто осознание ситуации приходит, когда становится ясно, сколько сил было потрачено впустую на компоненты для ПК, которые все реже востребованы из-за растущего числа мобильных пользователей. При анализе стилей подобных сайтов чаще всего встречается CSS media max width.
Если дизайн разрабатывался в первую очередь под настольные ПК, значит весь CSS должен быть насыщен объемным кодом для других ключевых точек (breakpoints). Если определенная ширина, заданная для ПК, является точкой отсчета, и мы не станем изменять и переписывать наш CSS, то вполне логично будет поменять в базовых стилях значения ширины окна просмотра на те, которые мы собираемся применять к экранам меньшего размера.
Вот пример, которым я часто пользуюсь (предполагая, что .related принимает форму боковой панели):
.content { width: 60%; } .related { width: 40%; } @media screen and (max-width: 37.4em) { .content, .related { width: 100%; } }
Такой подход при использовании со множеством компонентов может существенно увеличить объем CSS завершенного проекта. Но так как блочные элементы по умолчанию занимают 100% ширины родительского элемента, то разумнее было бы прописать все следующим образом:
@media screen and (min-width: 37.5em) { .content { width: 60%; } .related { width: 40%; } }
Здесь мы используем стандартное положение блочных элементов, и перекрываем их, когда это состояние требуется изменить. Чтобы лучше понять суть всего сказанного, нужно изучить рабочий код таких сайтов.
Есть несколько причин использования в min width CSS и max width CSS:
- Если вы получили дизайн только для настольной версии сайта. Если вы получили настольную версию дизайна и несколько дополнительных вариантов для мобильных устройств. В таких случаях можете использовать max-width, но только временно;
- Вы внедряете адаптивный дизайн в уже работающий сайт, и код его стилей нельзя изменять;
- Вы пытаетесь компенсировать отсутствие медиа-запросов, и пытаетесь реализовать это с помощью CSS вместо JavaScript.
Обращайте внимание на стандартный вариант отображения конкретного элемента. Если вам нужно переписывать стандартное состояние для меньших экранов, то используйте max-width. Если элемент можно использовать на меньших экранах и при стандартном состоянии, применяйте min-width только в тех случаях, когда элемент должен отличаться от стандартного состояния. И конечно же, я рекомендую вам позволить контенту определять, что и как должно происходить.
Таблицы – отличный пример использования CSS div max width для изменения стандартного состояния элемента, чтобы он лучше отображался на маленьких экранах. Представьте таблицу, контента в которой слишком много, чтобы отображать его полностью на маленьких устройствах. В таком случае мы можем применить следующий код:
@media only screen and (max-width: 30em) { .big-table tr, .big-table td { display: block; } }
Этот код позволит нам преобразовать каждую строку (и ячейку) в блок. В результате таблица может стать длинной по вертикали, но зачастую это меньшее из зол. Я имею в виду длинные таблицы, которые приходится прокручивать по горизонтали. В таких ситуациях лучше всего оставить таблицы без изменений, за исключением кода для тех браузеров, которые понимают медиа-запросы, и случаев, когда ширина экрана не превышает определенного значения (30em в нашем случае).
Другие элементы, которые в стандартном состоянии отлично смотрятся на маленьких экранах, нужно изменять лишь по необходимости для экранов большего размера. В таких случаях и применяется min-width.
Вкратце: позвольте стандартному состоянию элементов помочь вам определить, какой медиа-запрос использовать.
Данная публикация является переводом статьи «Choosing between min-width and max-width media queries» , подготовленная редакцией проекта.
CSS media запросов: max-width OR max-height
Быстрый ответ.
Отдельные правила с запятыми: @media handheld, (min-width: 650px), (orientation: landscape) { ... }
Длинный ответ.
Здесь много чего есть, но я постарался сделать его насыщенным информацией, а не просто пушистым письмом. Это был хороший шанс узнать себя! Потратьте время на систематическое чтение, и я надеюсь, что это будет полезно.
Media Запроса
запросы Media по существу используются в веб — дизайне для создания специфичных для устройства или ситуации условий просмотра; это делается с помощью объявления @media
в CSS страницы . Это может быть использовано для отображения веб-страницы по-разному при большом количестве обстоятельств: независимо от того, находитесь ли вы на планшете или TV с различными соотношениями сторон, имеет ли ваше устройство цветной экран или black-and-white, или, возможно, чаще всего, когда пользователь изменяет размер своего браузера или переключается между устройствами просмотра с различными размерами экрана (очень часто подобный дизайн называется адаптивным веб- дизайном )
Логические Операторы
При проектировании для этих ситуаций, по-видимому, существует четыре логических оператора , которые могут использоваться для более сложных комбинаций требований при ориентации на различные устройства или размеры видовых экранов.
(Примечание: Если вы не понимаете различий между правилами media, запросами media и запросами функций, сначала просмотрите нижнюю часть этого ответа, чтобы немного лучше ознакомиться с терминологией, связанной с синтаксисом запроса media
1. AND ( и ключевое слово)
Требует, чтобы все указанные условия были выполнены до того, как правила укладки вступят в силу.
@media screen and (min-width: 700px) and (orientation: landscape) { ... }
Указанные правила стиля не вступят в силу, если все следующие значения не будут оценены как истинные:
- Тип media-это ‘screen’ и
- Окно просмотра имеет ширину не менее 700 пикселей и
- Ориентация экрана в настоящее время является альбомной.
Примечание: Я считаю, что при совместном использовании эти три запроса функций составляют один запрос media .
2. OR ( Списки, разделенные запятыми )
Вместо ключевого слова или списки, разделенные запятыми, используются при объединении нескольких запросов media вместе, чтобы сформировать более сложное правило media
@media handheld, (min-width: 650px), (orientation: landscape) { ... }
Указанные правила стиля вступят в силу, как только любой запрос media будет оценен как истинный :
- Тип media-это ‘handheld’ или
- Окно просмотра имеет ширину не менее 650 пикселей или
- Ориентация экрана в настоящее время является альбомной.
3. NOT ( не ключевое слово)
Ключевое слово not может использоваться для отрицания одного запроса media (а NOT-полного правила media, что означает, что оно отрицает только записи между набором запятых, а не полное правило media, следующее за объявлением @media).
Аналогично, обратите внимание, что ключевое слово not отрицает запросы media, его нельзя использовать для отрицания отдельного запроса объектов в запросе media.*
@media not screen and (min-resolution: 300dpi), (min-width: 800px) { ... }
Стиль, указанный здесь, вступит в силу, если
- Минимальное разрешение media типа AND не соответствует их требованиям (‘screen’ и ‘300dpi’ соответственно) или
- Окно просмотра имеет ширину не менее 800 пикселей.
Другими словами, если тип media равен ‘screen’, а минимальное разрешение составляет 300 точек на дюйм, правило не вступит в силу, если минимальная ширина окна просмотра не будет составлять не менее 800 пикселей.
(Ключевое слово not может быть немного пугающим, чтобы заявить. Дай мне знать, если я смогу сделать лучше. 😉
4. ONLY ( только ключевое слово)
Насколько я понимаю, единственное ключевое слово используется для того, чтобы старые браузеры не могли неправильно интерпретировать новые запросы media как ранее используемый, более узкий тип media. При правильном использовании older/non-compliant браузеры должны просто полностью игнорировать стиль.
<link rel="stylesheet" media="only screen and (color)" href="example.css" />
Более старый / несовместимый браузер просто проигнорировал бы эту строку кода в целом, я полагаю, поскольку он прочитал бы единственное ключевое слово и посчитал бы его неправильным типом media . (Смотрите Здесь и здесь для получения дополнительной информации от более умных людей)
ДЛЯ ПОЛУЧЕНИЯ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ
Для получения дополнительной информации (включая дополнительные функции, которые можно запросить) см.: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries#Logical_operators
Понимание терминологии запросов Media
Примечание: Мне нужно было изучить следующую терминологию, чтобы все здесь имело смысл, особенно в отношении ключевого слова not . Вот оно как я его понимаю:
Правило media (MDN также, по-видимому, вызывает эти операторы media) включает в себя термин @media
со всеми вытекающими из него запросами media
@media all and (min-width: 800px)
@media only screen and (max-resolution:800dpi), not print
@media screen and (min-width: 700px), (orientation: landscape)
@media handheld, (min-width: 650px), (min-aspect-ratio: 1/1)
Запрос media — это набор запросов объектов. Они могут быть простыми, как один запрос объекта, или они могут использовать ключевое слово и для формирования более сложного запроса. запросы Media могут быть разделены запятыми, чтобы сформировать более сложные правила media (см. Ключевое слово or выше).
screen
(Note: Only one feature query in use here.)
only screen
only screen and (max-resolution:800dpi)
only tv and (device-aspect-ratio: 16/9) and (color)
NOT handheld, (min-width: 650px)
. (Обратите внимание на запятую: здесь есть два запроса media.)
Запрос функции является самой основной частью правила media и просто касается данной функции и ее статуса в данной ситуации просмотра.
screen
(min-width: 650px)
(orientation: landscape)
(device-aspect-ratio: 16/9)
Фрагменты кода и информация, полученная из:
CSS media запросов участников Mozilla (лицензия под CC-BY-SA 2.5 ).) Некоторые образцы кода были использованы с незначительными изменениями, чтобы (надеюсь) повысить ясность объяснения.
Media Queries медиа запросы CSS уроки для начинающих академия
CSS Media запросы-больше примеров
Рассмотрим еще несколько примеров использования медиа-запросов.
Мультимедийные запросы — это популярный способ доставки адаптированной таблицы стилей к различным устройствам. Чтобы продемонстрировать простой пример, мы можем изменить цвет фона для различных устройств:
Пример
/* Set the background color of body to tan */body {
background-color: tan;
}
/* On
screens that are 992px or less, set the background color to blue */
@media
screen and (max-width: 992px) {
body {
background-color: blue;
}
}
/* On screens that are 600px or less,
set the
background color to olive */
@media screen and (max-width: 600px) {
body {
background-color: olive;
}
}
Вы удивляетесь, почему мы используем именно 992пкс и 600px? Это то, что мы называем «типичными точками останова» для устройств. Более подробную информацию о типичных точках останова можно прочитать в руководстве по адаптивному веб-дизайну.
Запросы мультимедиа для меню
В этом примере мы используем мультимедийные запросы для создания адаптивного меню навигации, которое изменяется в дизайне на разных размерах экрана.
Пример
/* The navbar container */.topnav {
overflow: hidden;
background-color: #333;
}
/* Navbar links */
.topnav a {
float:
left;
display: block;
color:
white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
/* On screens that are 600px wide or less, make the menu links stack on top
of each other instead of next to each other */
@media screen and (max-width: 600px) {
.topnav a {
float: none;
width:
100%;
}
}
Запросы носителей для столбцов
Обычное использование мультимедийных запросов — это создание гибкого макета. В этом примере мы создаем макет, который варьируется от четырех, двух и полной ширины столбцов, в зависимости от различных размеров экрана:
Большие экраны:
Средние экраны:
Пример
/* Create four equal columns that floats next to each other */.column {
float: left;
width: 25%;
}
/* On screens that are 992px
wide or less, go from
four columns to two columns */
@media screen and (max-width: 992px) {
.column {
width: 50%;
}
}
/* On screens that are
600px wide or less, make
the columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
.column {
width:
100%;
}
}
Совет: Более современный способ создания макетов столбцов — использование CSS Flexbox (см. пример ниже). Тем не менее он не поддерживается в Internet Explorer 10 и более ранних версиях. Если вам необходима поддержка IE6-10, используйте float (как показано выше).
Чтобы узнать больше о модуле макета гибкой коробки, прочитайте нашу главу CSS Flexbox.
Чтобы узнать больше о адаптивном веб-дизайне, прочитайте наш отзывчивый веб-дизайн учебника.
Пример
/* Container for flexboxes */.row {
display: flex;
flex-wrap: wrap;
}
/* Create four equal columns */
.column {
flex: 25%;
padding: 20px;
}
/* On screens that are 992px wide or less, go from
four columns to two columns */
@media screen and (max-width: 992px) {
.column {
flex: 50%;
}
}
/* On screens that are 600px wide or less, make
the columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
.row {
flex-direction: column;
}
}
Скрытие элементов с помощью запросов мультимедиа
Другим распространенным использованием мультимедийных запросов является скрытие элементов на различных размерах экрана:
Я буду скрыта на маленьких экранах.
Пример
/* If the screen size is 600px wide or less, hide the element */
@media
screen and (max-width: 600px) {
div.example {
display: none;
}
}
Изменение размера шрифта с помощью запросов мультимедиа
Также можно использовать запросы мультимедиа для изменения размера шрифта элемента на различных размерах экрана:
Пример
/* If screen size is more than 600px wide, set the font-size of to 80px */@media screen and (min-width: 600px) {
div.example {
font-size: 80px;
}
}
/* If screen size is 600px wide, or less,
set the font-size of <div> to 30px */
@media screen and (max-width: 600px) {
div.example {
font-size: 30px;
}
}
Гибкая Галерея изображений
В этом примере мы используем мультимедийные запросы вместе с Flexbox для создания адаптивной галереи изображений:
Гибкий сайт
В этом примере мы используем мультимедийные запросы вместе с Flexbox для создания адаптивного веб-сайта, содержащего гибкую панель навигации и гибкий контент.
Ориентация: портрет/пейзаж
Мультимедийные запросы также можно использовать для изменения макета страницы в зависимости от ориентации браузера.
Вы можете иметь набор свойств CSS, которые будут применяться только в том случае, если окно обозревателя шире, чем его высота, так называемая «Ландшафтная» ориентация:
Пример
Используйте цвет фона лигхтблуе, если ориентация находится в альбомном режиме:
@media only screen and (orientation:
landscape) {
body {
background-color: lightblue;
}
}
Минимальная ширина до максимальной ширины
Можно также использовать значения (max-width: ..) and (min-width: ..)
для задания минимальной ширины и максимальной ширины.
Например, если ширина обозревателя находится между 600 и 900px, измените внешний вид элемента <div>:
Пример
@media screen and (max-width: 900px) and (min-width: 600px) {
div.example {
font-size: 50px;
padding: 50px;
border: 8px solid black;
background: yellow;
}
}
Использование дополнительного значения: В приведенном ниже примере мы добавляем дополнительный мультимедийный запрос к уже существующему, используя запятую (это будет вести себя как оператор OR):
Пример
/* When the width is between 600px and 900px OR above 1100px
— change the appearance of <div> */
@media screen and (max-width: 900px) and (min-width:
600px), (min-width:
1100px) {
div.example {
font-size: 50px;
padding: 50px;
border: 8px solid black;
background: yellow;
}
}
CSS @media ссылка
Для полного обзора всех типов носителей и функций/выражений, пожалуйста, посмотрите на @media правило в нашей ссылке CSS.
Совет: Чтобы узнать больше о адаптивном веб-дизайне (как ориентироваться на различные устройства и экраны), используя точки останова для запросов мультимедиа, прочитайте наш учебник по адаптивному веб-дизайну.
Медиавыражения в CSS — это не только max-width / Хабр
Недавно мы опубликовали новый веб-сайт нашей компании Mabiloft с полностью переработанным чистым дизайном и множеством новых великолепных иллюстраций и анимаций.
После того, как наш дизайнер проделал потрясающую работу, продумав и нарисовав сайт, нам, разработчикам, было необходимо реализовать макет, сохранив его чистым и цельным для каждого устройства, от большого 2K экрана, на которых мы пишем код, до старого iPhone 4 с его 3.5-дюймовым дисплеем.
Несколько недель спустя веб-сайт был почти готов и я просматривал его, чтобы убедиться, что всё работает как нужно. Заметив, что макет главной страницы неправильно отображался на нашем iPad, я быстро изменил некоторые CSS-правила и исправил ошибку, но… это привело к проблемам отображения макета на всех всех ноутбуках с небольшим экраном
Разыскивая решение сложившейся проблемы, я обнаружил, что мог бы сделать оба макета идеальными, используя только CSS медиавыражения, не прибегая к использованию JavaScript.
Фактически, до этого я в основном использовал CSS медиавыражения, чтобы сделать макет отзывчивым, используя max-width и min-width.
Теперь я обнаружил, что CSS-медиавыражения – это не только max-width, а множество разных значений. И некоторые из них могут быть действительно полезны в повседневной жизни.
Итак, что же это за медиавыражения, о которых я говорю? Возможно, о некоторых вы уже слышали. Но я также выделил из них и несколько новых, применение которых может быть весьма полезным
Размер вьюпорт
Да, я говорю о
width, height, min-width, min-height, max-widthи
max-height.
Нуждаются ли они в особом представлении? Я буду краток.
Эти медиа-функции используются для установки разных стилей для разных размеров экрана. Они очень полезны при разработке отзывчивой системы.
Поскольку функции width и height могут устанавливать стили только для точно заданного размера области видимости, более вероятно, что вы будете использовать префиксы max- и min-. Например, в следующем коде стили будут применяться, только если высота вьюпорт больше 320 пикселей.
/* Красный фон применится, только если высота вьюпорт больше 320 пикселей */
body {
background-color: #FFD23F; /* Желтый фон */
}
@media screen and (min-height: 320px) {
body {
background-color: #EE4266; /* Красный фон */
}
}
Но вы также можете смешивать эти функции для обработки диапазона размеров
/* Красный фон применится, если ширина области видимости от 320 до 600 пикселей */
body {
background-color: #FFD23F; /* Желтый фон */
}
@media screen and (min-width: 320px) and (max-width: 600px) {
body {
background-color: #EE4266; /* Красный фон */
}
}
Следующий пример демонстрирует, как можно использовать функцию max-width для изменения цвета фона в зависимости от ширины области видимости
body {
background-color: #0EAD69;
}
@media screen and (max-width: 1600px) {
body {
background-color: #3BCEAC;
}
}
@media screen and (max-width: 1280px) {
body {
background-color: #FFD23F;
}
}
@media screen and (max-width: 960px) {
body {
background-color: #EE4266;
}
}
@media screen and (max-width: 600px) {
body {
background-color: #540D6E;
}
}
Ориентация экрана
Orientation
– это хорошая медиа-функция, которая позволяет вам производить изменения в зависимости от ориентации дисплея. Она может иметь два значения:
portrait(портрет) и
landscape(пейзаж/альбом).
Но что браузер считает портретом, а что пейзажем? Значение портрета будет инициировать изменения каждый раз, когда высота области видимости больше ширины. Аналогично, если ширина больше высоты, вьюпорт будет считаться «альбомным».
Например, этот код даёт следующий результат:
/* Красный фон применяется только, если ориентация экрана альбомная */
body {
background-color: #FFD23F; /* Желтый фон */
}
@media screen and (orientation: landscape) {
body {
background-color: #EE4266; /* Красный фон */
}
}
Соотношение сторон
Данная медиа-функция похожа на функцию ориентации, но является более точной. Вы можете установить правила для конкретного необходимого соотношения сторон. Например, можно установить разную разметку для телефонов с экранами 16/9 и 18/9.
Эта функция также может иметь префикс max- и min- для обработки диапазона экранов с разным соотношением сторон
Наведение и указатель
Итак, я попробую объяснить эти медиа-функции как можно проще, ведь они достаточно полезны.
Обе медиа-функции hover и pointer относятся к определению основного механизма ввода на сайте. Например, мышь. Или палец, если вы используете смартфон. Чтобы определить все механизмы ввода, можно использовать функции any-hover и any-pointer.
А теперь перейдем к тому, что же они делают?
Функция hover (и any-hover) позволяет браузеру узнать, может ли основной механизм ввода наводиться на элементы (например, как курсор мыши).
Вы можете использовать эту функцию для определения основного механизма ввода, который
- hover: hover, может наводиться на элементы
- hover: none, не может наводиться на элементы или механизма ввода с возможностью наведения нет вообще
Когда это стоит использовать? Например, когда вы хотите обрабатывать анимацию наведения на мобильных устройствах, где механизм ввода (палец) не может наводиться на элементы.
Функции pointer (и any-pointer) позволяют браузеру узнать, имеет ли основной механизм ввода указатель (например, мышь) и если имеет, то насколько он точный.
Вы можете использовать эту функцию для определения основного механизма ввода, который:
- pointer: coarse, включает в себя указательно ограниченной точности
- pointer: fine, включает в себя точное указатель
- pointer: none, не включает в себя указатель
Это полезно, например, для увеличения области нажатия на устройства с неточным указателем
Эй, это всё скучно. Где новые крутые функции, о которых упоминалось раньше?
Вот они!
Учтите, что следующие функции являются экспериментальными и в данный момент имеют очень ограниченную поддержку.
Инвертированные цвета
Функция инвертированных цветов очень полезна, если вам нужно применить некоторые стили, когда системные цвета имеют такую же настройку.
Зачем включать инвертирование системных цветов? Обычно это очень полезно, если хочется улучшить читаемость.
Также имейте в виду, что еще одной хорошей практикой является увеличение шрифта и уменьшение жирности, когда цвета инвертированы. Это именно то, что вы можете сделать с помощью медиавыражений.
У данной функции есть только два значения:
- inverted: применить стили, если цвета инвертированы
- none: применить стили по умолчанию
Вот пример! Когда цвета инвертируются, размер текста увеличивается
.text {
font-size: 24px;
}
@media screen and (inverted-colors: inverted) {
.text {
font-size: 36px;
}
}
Пожалуйста, обратите внимание, что в данный момент эта функция поддерживается только в Safari (на macOS и iOS). Всегда актуальный список поддерживаемых браузеров можно найти здесь
Предпочитаемая цветовая схема
Это одна из моих любимых функций, и я надеюсь, что постепенно она станет популярной.
Функция позволяет разработчикам устанавливать различные варианты оформления для элементов, если изменяется цветовая схема. И Windows и macOS позволяет пользователям менять системную цветовую схему со светлой на тёмную и обратно. iOS 13 также представила эту функцию, а для пользователей Android эта возможность станет доступной с приходом Android Q.
Поддержка браузерами также приличная. На данный момент последние версии Google Chrome, Mozilla Firefox и Safari поддерживают эту функцию. На мобильных устройствах её также поддерживают все основные браузеры, кроме Opera. Всегда актуальный список поддерживаемых браузеров можно найти здесь
Значения для этой функции достаточно понятны интуитивно:
- light: применить стили, если пользователь предпочитает светлую тему
- dark: применить стили, если пользователь предпочитает тёмную тему
- no-preference: применить стили по умолчанию
Посмотреть, насколько крута эта функция, можно в примере ниже!
.appbar {
background-color: #EE4266;
}
.fab {
background-color: #424242;
}
@media screen and (prefers-color-scheme: dark) {
body {
background-color: #424242;
}
.appbar {
background-color: #212121;
}
h3 {
color: #fff;
}
.fab {
background-color: #EE4266;
}
}
Установка системной тёмной темы делает страницу также тёмной
Сокращение количества анимации
Это также очень важно. Лично я люблю анимации и переходы, и я думаю, что правильная анимация может действительно улучшить удобство взаимодействия с сайтом. Но не всем нравятся анимации и, что более важно, у некоторых людей могут быть вестибулярные расстройства, из-за которых может возникать укачивание и головокружение. Я нашел полезную
статью, которая очень хорошо объясняет подобные явления.
В общем, на наиболее важных десктопных и мобильных операционных системах существует опция доступности, позволяющая решить эти проблемы путём уменьшения подвижности элементов.
Эта функция может иметь два значения:
- reduce: применяет стили, если пользователь не хочет видеть анимации и переходы. Это значение обычно используется для их отключения
- no-preference: применяет обычные стили
Проверьте эту функцию в примере ниже:
.pulse {
animation: pulse 2s infinite;
}
@media screen and (prefers-reduced-motion: reduce) {
.pulse {
animation: none;
}
}
Анимация пульсации прекращается, когда пользователь выбирает снижения подвижности элементов
Браузерная совместимость для этой функции достаточно хорошая. В данный момент только Edge и IE не поддерживают её. Всегда актуальный список поддерживаемых браузеров можно найти здесь
Заключение
Для меня это был интересный эксперимент, я узнал о некоторых новых возможностях, которые я, вероятно, теперь буду использовать гораздо чаще.
Хотелось бы упомянуть еще о некоторые функциях, как например, light-level, которая может использоваться для проверки уровня окружающего освещения, но большинство недавно представленных функций медиавыражений всё еще не имеют поддержки ни одним из браузеров, так что… еще не пришло время.
Примеры кода
Вы можете ознакомиться с примерами кода здесь. Код находится в открытом доступе на Github.
Кто мы
Мы команда молодых разработчиков и дизайнеров, находящихся в Падуя, Италия. Мы разрабатываем мобильные приложения и веб-сайты и всегда готовы создавать что-то великое
Примеры различных медиа-запросов CSS помимо max-width и min-width
От автора: недавно мы запустили новый веб-сайт нашей компании Mabiloft, с полностью переработанным чистым макетом и множеством новых великолепных иллюстраций и анимации. В то время как наш дизайнер проделал потрясающую работу, придумав и нарисовав сайт, сложной задачей для нас, разработчиков, было сделать так, чтобы макет оставался чистым и функциональным для каждого устройства, от большого 2К-экрана, до старого iPhone 4 с его 3,5-дюймовым экраном.
Несколько недель назад веб-сайт был почти готов, и я просматривал разные страницы, чтобы убедиться, что все было так, как задумано. Я заметил, что макет на главной странице ломается на iPad. Я быстро изменил некоторые CSS-правила и исправил их, но… после этого макет сломался на ноутбуке с маленьким дисплеем.
В поисках решения я обнаружил, что могу сделать оба макета идеальными, используя только медиа-запросы CSS, не касаясь кода JavaScript. Фактически, до этого я в основном использовал медиа-запросы CSS для создания адаптивного макета, но только с max-width и min-width.
Теперь я обнаружил, что медиа-запросы CSS — это не только max-width, их множество. И некоторые из них могут быть действительно полезны в повседневной работе.
Итак, что это за полезные медиа-запросы, о которых я говорю? Возможно, вы слышали о некоторых из них. Я также выбрал несколько новинок, которые могут пригодиться, если вы хотите, чтобы на вашем сайте были маленькие детали, которые имеют значение.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееМедиа-запросы размеров окна просмотра
Да, я говорю о width, height, min-width, min-height, max-width и max-height. Нужно ли их вам представлять? Попробую сделать это вкратце. Эти функции используются для установки разных стилей для разных размеров экрана. Они очень полезны для построения адаптивной системы.
Поскольку функции width и height могут устанавливать стили только для точного размера области просмотра, более вероятно, что вы будете использовать префиксы max и min. Например, этот код будет применять стили, если высота области просмотра превышает 320 пикселей.
body { background-color: #FFD23F; /* Yellow */ } @media screen and (min-height: 320px) { body { background-color: #EE4266; /* Red */ } }
body { background-color: #FFD23F; /* Yellow */ }
@media screen and (min-height: 320px) { body { background-color: #EE4266; /* Red */ } } |
Красный фон будет применяться только в том случае, если высота области просмотра превышает 320 пикселей.
Но вы также можете смешать эти функции для обработки диапазона размеров.
body { background-color: #FFD23F; /* Yellow */ } @media screen and (min-width: 320px) and (max-width: 600px) { body { background-color: #EE4266; /* Red */ } }
body { background-color: #FFD23F; /* Yellow */ }
@media screen and (min-width: 320px) and (max-width: 600px) { body { background-color: #EE4266; /* Red */ } } |
Красный фон будет применяться, если ширина области просмотра составляет от 320 до 600 пикселей.
В следующем примере показано, как можно использовать функцию min-width для изменения цвета фона в зависимости от ширины области просмотра.
body { background-color: #0EAD69; } @media screen and (max-width: 1600px) { body { background-color: #3BCEAC; } } @media screen and (max-width: 1280px) { body { background-color: #FFD23F; } } @media screen and (max-width: 960px) { body { background-color: #EE4266; } } @media screen and (max-width: 600px) { body { background-color: #540D6E; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | body { background-color: #0EAD69; }
@media screen and (max-width: 1600px) { body { background-color: #3BCEAC; } }
@media screen and (max-width: 1280px) { body { background-color: #FFD23F; } }
@media screen and (max-width: 960px) { body { background-color: #EE4266; } }
@media screen and (max-width: 600px) { body { background-color: #540D6E; } } |
Ориентация
Orientation — это полезная медиа-функция, которая позволяет вносить изменения в зависимости от ориентации экрана. Может иметь два значения: portrait и landscape.
Но что браузер считает portrait и что landscape? Значение portrait будет вызывать изменения каждый раз, когда высота области просмотра больше ширины. Аналогично, если ширина больше, чем высота, область просмотра будет landscape. Например, этот код дает следующий результат:
body { background-color: #FFD23F; /* Yellow */ } @media screen and (orientation: landscape) { body { background-color: #EE4266; /* Red */ } }
body { background-color: #FFD23F; /* Yellow */ }
@media screen and (orientation: landscape) { body { background-color: #EE4266; /* Red */ } } |
Красный фон будет применяться, если ориентация области просмотра является альбомной.
Соотношение сторон
Это похоже на функцию ориентации, но более точно. Вы можете установить правила для точного соотношения сторон, которое вам нужно. Например, вы можете установить различные правила соотношения сторон для телефонов 16/9 и новых телефонов 18/9. Эта функция может также иметь префикс max- и min- для обработки ряда форматов изображения.
hover и pointer
Хорошо, я постараюсь объяснить эти медиа-функции как можно проще, так как они полезны. И hover, и pointer относятся к первичным механизмам входа сайта. Мышь, например. Или палец, если вы используете смартфон для навигации по сайту. Чтобы указать все механизмы ввода, вы можете использовать функции any-hover и any-pointer.
Теперь, что они практически делают? Функции hover (и any-hover) позволяют браузеру узнать, может ли основной механизм ввода наводиться на элементы. Вы можете использовать это следующим образом:
hover: hover, если основной механизм ввода может наводиться;
hover: none, если первичный механизм ввода не может наводиться на элементы или первичный механизм ввода с наведением отсутствует.
Когда я должен использовать это? Например, если вы хотите обрабатывать анимацию наведения на мобильных устройствах, где механизм ввода (палец) не может наводиться на элементы.
Функции pointer (и any-pointer) позволяют браузеру узнать, имеет ли основной механизм ввода указательное устройство (например, мышь), и насколько он точен. Вы можете использовать это следующим образом:
pointer: coarse, если основной механизм ввода содержит указательное устройство ограниченной точности;
pointer: fine, если основной механизм ввода содержит точное указательное устройство;
pointer: none, если основной механизм ввода не содержит указательного устройства.
Это полезно, например, для расширения области клика на устройствах с неточным указательным устройством.
Эй, это все скучные вещи, где новая классная функция, о которой ты говорил?
Она здесь! Обратите внимание, что ниже приведены экспериментальные функции, и их поддержка в настоящий момент очень ограничена.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееinverted-colors
Функция inverted-colors полезна, если вам нужно применить некоторые стили, когда системные цвета инвертированы.
Для чего мне инвертировать системные цвета? Обычно это очень полезно, если вам нужно улучшить читаемость.
Также имейте в виду, что при инвертировании цветов рекомендуется увеличивать размер шрифта и уменьшать толщину шрифта. Это отличная вещь, которую вы можете сделать с помощью этой медиа-функции!
У нее есть только пара значений:
inverted: применять стили, если цвета инвертированы;
none: применять стили по умолчанию.
Вот пример! Когда цвета инвертированы, размер текста будет увеличиваться.
.text { font-size: 24px; } @media screen and (inverted-colors: inverted) { .text { font-size: 36px; } }
.text { font-size: 24px; }
@media screen and (inverted-colors: inverted) { .text { font-size: 36px; } } |
Обратите внимание, что в данный момент эта функция поддерживается только в Safari (как на MacOS, так и на iOS). Постоянно обновляемый список поддерживаемых браузеров можно найти здесь.
prefers-color-scheme
Это одна из моих любимых функций, и я надеюсь, что она постепенно станет популярной. Она позволяет разработчикам устанавливать различные стили для элементов в случае изменения цветовой схемы. И Windows, и MacOS позволяют пользователям менять системную тему со светлой на темную и наоборот, iOS 13 также представила эту функцию, а Android Q сделает это вскоре.
Поддержка браузерами также приличная. На данный момент последние версии Google Chrome, Mozilla Firefox и Safari поддерживают эту функцию. На мобильных устройствах ее поддерживают также все основные браузеры, кроме Opera. Постоянно обновляемый список поддерживающих браузеров можно найти здесь.
Значения этой функции довольно интуитивны:
light: применять стили, если пользователь предпочитает светлую тему;
dark: применять стили, если пользователь предпочитает темную тему;
no-preference: применять стили по умолчанию.
Посмотрите, как круто эта функция работает в примере ниже!
.appbar { background-color: #EE4266; } .fab { background-color: #424242; } @media screen and (prefers-color-scheme: dark) { body { background-color: #424242; } .appbar { background-color: #212121; } h3 { color: #fff; } .fab { background-color: #EE4266; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | .appbar { background-color: #EE4266; }
.fab { background-color: #424242; }
@media screen and (prefers-color-scheme: dark) {
body { background-color: #424242; }
.appbar { background-color: #212121; }
h3 { color: #fff; }
.fab { background-color: #EE4266; }
} |
Установка темной темы системы делает страницу также темной!
prefers-reduced-motion
Это тоже очень важная функция. Мне лично нравятся анимация и переходы, и я думаю, что правильная анимация действительно может изменить пользовательский опыт. Но анимации нравится не всем, и, самое главное, некоторые люди могут страдать вестибулярными расстройствами, которые вызывают укачивание и головокружение. Я нашел полезную статью, которая очень хорошо это объясняет.
Таким образом, в основных настольных и мобильных ОС есть опция доступности, чтобы справиться с этим беспорядком, уменьшая движение системы. prefers-reduced-motion обрабатывает эту опцию.
Данная функция может принимать два значения:
reduce: применить стили, если пользователь не хочет видеть анимацию и переходы. Обычно используется для их отключения;
no-preference: чтобы применить стандартные стили.
Посмотрите пример ниже:
.pulse { animation: pulse 2s infinite; } @media screen and (prefers-reduced-motion: reduce) { .pulse { animation: none; } }
.pulse { animation: pulse 2s infinite; }
@media screen and (prefers-reduced-motion: reduce) { .pulse { animation: none; } } |
Анимация пульсации останавливается, в зависимости от настроек пользователя.
Совместимость браузеров достаточно хороша. На данный момент только Edge и IE не имеют поддержки. С постоянно обновляемой таблицей совместимости можно ознакомиться здесь.
Заключение
Для меня это был забавный эксперимент, я изучил некоторые новые функции, которые, вероятно, буду использовать гораздо чаще.
Я хотел бы рассмотреть еще несколько примеров, таких как функция light-level, которую можно использовать для проверки уровня внешней освещенности, но большинство недавно представленных медиа-функций по-прежнему не имеют поддержки браузеров, так что… еще не время. Кстати, полный список функций можно найти здесь.
Примеры кода
Вы можете увидеть онлайн-примеры здесь. Источник с открытым исходным кодом на Github, так что вы можете посмотреть его!
Автор: Francesco Baldan
Источник: //medium.com
Редакция: Команда webformyself.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Узнать подробнееФреймворк Bootstrap 5. Быстрый старт
Изучите основы Bootstrap 5 на практическом примере по верстке интернет-магазина с нуля!
СмотретьCSS3 Media Queries — Примеры
CSS Media Queries — Дополнительные примеры
Рассмотрим еще несколько примеров использования медиа-запросов.
Медиа-запросы — это популярный метод доставки индивидуализированной таблицы стилей на различные устройства. Чтобы продемонстрировать простой пример, мы можем изменить цвет фона для разных устройств:
Пример
/ * Установить коричневый цвет фона тела * /body {
цвет фона: коричневый;
}
/ * Вкл.
экраны размером 992px или меньше, установите синий цвет фона * /
@media
экран и (max-width: 992px) {
body {
цвет фона: синий;
}
}
/ * На экранах размером 600 пикселей или меньше,
установить
цвет фона в оливковый * /
@media screen и (max-width: 600px) {
корпус {
фоновый цвет: оливковый;
}
}
Вам интересно, почему мы используем именно 992px и 600px? Это то, что мы называем «типичными точками останова» для устройств.Вы можете узнать больше о типичных точках останова в нашем руководстве по адаптивному веб-дизайну.
Медиа-запросы для меню
В этом примере мы используем медиа-запросы для создания адаптивного меню навигации, которое в дизайне на экранах разных размеров.
Пример
/ * Контейнер навигационной панели * /.topnav {
overflow: hidden;
цвет фона: # 333;
}
/ * Ссылки на навигационную панель * /
.topnav a {
float:
левый;
дисплей: блок;
цвет:
белый;
выравнивание текста: по центру;
отступ: 14 пикселей 16 пикселей;
текстовое оформление: нет;
}
/ * На экранах шириной 600 пикселей или меньше, ссылки меню должны располагаться наверху
друг друга, а не рядом * /
@media screen и (max-width: 600px) {
.topnav a {
float: none;
ширина:
100%;
}
}
Медиа-запросы для столбцов
Обычно медиа-запросы используются для создания гибкого макета. В этом примере мы создаем макет, который варьируется от четырех до двух столбцов и столбцов полной ширины, в зависимости от разных размеров экрана:
Пример
/ * Создаем четыре равных столбца, которые плавают рядом друг с другом * /.column {
плыть налево;
ширина: 25%;
}
/ * На экранах размером 992 пикселей
широкий или менее, идите от
четыре столбца в два столбца * /
@media screen и (max-width: 992px) {
.столбец {
ширина: 50%;
}
}
/ * На экранах, которые
600 пикселей в ширину или меньше, сделайте
столбцы располагаются друг над другом, а не рядом друг с другом * /
@media screen и (max-width: 600px) {
.column {
width:
100%;
}
}
Совет: Более современный способ создания макетов столбцов — использовать CSS Flexbox (см. Пример ниже). Однако он не поддерживается в Internet Explorer 10 и более ранних версиях.Если вам требуется поддержка IE6-10, используйте числа с плавающей запятой (как показано выше).
Чтобы узнать больше о модуле Flexible Box Layout, прочтите нашу главу CSS Flexbox.
Чтобы узнать больше об адаптивном веб-дизайне, прочтите наше руководство по адаптивному веб-дизайну.
Пример
/ * Контейнер для флексбоксов * /.row {
display: flex;
flex-wrap: обертка;
}
/ * Создайте четыре равных столбца * /
.column {
flex: 25%;
отступ: 20 пикселей;
}
/ * На экранах шириной 992 пикселя или меньше перейдите от
четыре столбца в два столбца * /
@media screen и (max-width: 992px) {
.колонна {
гибкость: 50%;
}
}
/ * На экранах шириной 600 пикселей или меньше сделайте
столбцы располагаются друг над другом, а не рядом друг с другом * /
@media screen и (max-width: 600px) {
.row {
flex-direction: столбец;
}
}
Скрыть элементы с помощью медиа-запросов
Еще одно распространенное использование медиа-запросов — скрытие элементов на экранах разных размеров:
Я буду скрываться на маленьких экранах.
Пример
/ * Если размер экрана 600 пикселей или меньше, скрыть элемент * /
@media
экран и (максимальная ширина: 600 пикселей) {
div.example {
дисплей: нет;
}
}
Изменение размера шрифта с помощью медиа-запросов
Вы также можете использовать медиа-запросы для изменения размера шрифта элемента на разные размеры экрана:
Пример
/ * Если размер экрана больше 600 пикселей в ширину, установите размер шрифта равным 80 пикселей * /@media screen и (min-width: 600px) {
div.пример {
размер шрифта: 80 пикселей;
}
}
/ * Если размер экрана составляет 600 пикселей или меньше, установите размер шрифта
@media screen и (max-width: 600 пикселей) {
div.example {
размер шрифта: 30 пикселей;
}
}
Попробуй сам »
Гибкая галерея изображений
В этом примере мы используем медиа-запросы вместе с flexbox для создания отзывчивой галереи изображений:
Гибкий сайт
В этом примере мы используем медиа-запросы вместе с flexbox для создания адаптивного веб-сайта, содержащего гибкую панель навигации и гибкий контент.
Ориентация: книжная / альбомная
Медиа-запросы также можно использовать для изменения макета страницы в зависимости от ориентация браузера.
У вас может быть набор свойств CSS, который будет только применяется, когда ширина окна браузера превышает его высоту, так называемый «ландшафтный» ориентация:
Пример
Используйте светло-голубой цвет фона, если ориентация в альбомном режиме:
@media только экран и (ориентация:
пейзаж) {
body {
background-color: lightblue;
}
}
Мин. Ширина до макс. Ширина
Вы также можете использовать (max-width: .. ) и (min-width: .. )
, чтобы установить минимальную и максимальную ширину.
Например, если ширина браузера составляет от 600 до 900 пикселей, измените внешний вид элемента
Пример
@media screen и (max-width: 900px) и (min-width: 600px) {
div.example {
размер шрифта: 50 пикселей;
отступ: 50 пикселей;
граница: сплошной черный цвет 8 пикселей;
фон: желтый;
}
}
Использование дополнительного значения: В приведенном ниже примере мы добавляем дополнительный медиа-запрос к уже имеющимся существующий, используя запятую (это будет вести себя как оператор ИЛИ):
Пример
/ * Когда ширина составляет от 600 до 900 пикселей ИЛИ больше 1100 пикселей — изменить внешний вид экрана
@media и (max-width: 900px) и (min-width: 600 пикселей), (минимальная ширина: 1100px) {
div.пример {
размер шрифта: 50 пикселей;
отступ: 50 пикселей;
граница: сплошной черный цвет 8 пикселей;
фон: желтый;
}
}
Попробуй сам »
CSS @media Ссылка
Для полного обзора всех типов и функций / выражений медиа, пожалуйста, посмотрите Правило @media в нашем справочнике CSS.
Совет: Чтобы узнать больше об адаптивном веб-дизайне (как настроить таргетинг на разные устройства и экраны), используя точки останова медиа-запросов, прочтите наше руководство по адаптивному веб-дизайну.
CSS @media Правило
Пример
Измените цвет фона элемента
на «светло-голубой», когда ширина окна браузера не превышает 600 пикселей:. только экран @media и (max-width: 600px) {
body {
background-color: lightblue;
}
}
Дополнительные примеры «Попробуйте сами» ниже.
Определение и использование
Правило @media
используется в медиа-запросах для применения разных стилей для разных типов / устройств медиа.
Медиа-запросы могут использоваться для проверки многих вещей, например:
- ширина и высота области просмотра
- ширина и высота устройства
- ориентация (планшет / телефон в альбомном или портретном режиме?)
- разрешение
Использование медиа-запросов — популярный метод предоставления индивидуального стиля лист (адаптивный веб-дизайн) для настольных компьютеров, ноутбуков, планшетов и мобильных телефонов.
Вы также можете использовать медиа-запросы, чтобы указать, что определенные стили предназначены только для печатных документов или для программ чтения с экрана (средний тип: печать, экран или речь).
Помимо типов носителей, есть еще и мультимедийные функции. Медиа особенности предоставлять более конкретную информацию о медиа-запросах, позволяя тестировать специфическая особенность пользовательского агента или устройства отображения. Например, вы может применять стили только к тем экранам, которые больше или меньше, чем определенная ширина.
Поддержка браузера
Числа в таблице указывают первую версию браузера, полностью поддерживающую правило @media.
Имущество | |||||
---|---|---|---|---|---|
@media | 21 | 9 | 3.5 | 4,0 | 9 |
Синтаксис CSS
@media not | только mediatype и (mediafeature и | или | не mediafeature) {
CSS-код;
}
значение , а не , только и и ключевые слова:
not: Ключевое слово not инвертирует значение всего носителя. запрос.
only: Единственное ключевое слово запрещает старым браузерам, которые не поддерживают медиа-запросы с медиа-функциями, применять указанные стили. Не влияет на современные браузеры.
и: Ключевое слово and объединяет мультимедийную функцию с мультимедийной функцией. тип или другие медиа-функции.
Все они необязательны. Однако, если вы используете , а не или только , необходимо также указать тип носителя.
У вас также могут быть разные таблицы стилей для разных носителей, например это:
….
Типы носителей
Значение | Описание |
---|---|
все | По умолчанию. Используется для всех типов носителей |
печать | Используется для принтеров |
экран | Используется для экранов компьютеров, планшетов, смартфонов и т. Д. |
речь | Используется для программ чтения с экрана, которые «читают» страницу вслух |
Функции мультимедиа
Значение | Описание |
---|---|
любое наведение | Позволяет ли какой-либо доступный механизм ввода пользователю наводить курсор мыши на элементы? (добавлено в Media Queries Level 4) |
любой указатель | Является ли любой доступный механизм ввода указывающим устройством, и если да, то как это точно? (добавлено в Media Queries Level 4) |
соотношение сторон | Соотношение ширины и высоты области просмотра |
цвет | Число битов на компонент цвета для устройства вывода |
цветовая гамма | Примерный диапазон цветов, поддерживаемых пользовательским агентом и устройство вывода (добавлено в Media Queries Level 4) |
индекс цвета | Количество цветов, которое может отображать устройство |
сетка | Является ли устройство сеткой или растровым изображением |
высота | Высота области просмотра |
наведение | Позволяет ли основной механизм ввода пользователю наводить курсор на элементы? (добавлено в Media Queries Level 4) |
инвертированные цвета | Инвертирует ли цвета браузер или базовая ОС? (добавлено в Медиа Запросы уровня 4) |
светлый | Текущий уровень внешней освещенности (добавлен в Media Queries Level 4) |
максимальное соотношение сторон | Максимальное соотношение ширины и высоты области отображения |
макс. Цвет | Максимальное количество бит на компонент цвета для устройства вывода |
max-color-index | Максимальное количество цветов, которое может отображать устройство |
макс. Высота | Максимальная высота области отображения, например окна браузера |
макс. Монохромный | Максимальное количество битов на «цвет» на монохромном (в оттенках серого) устройстве |
максимальное разрешение | Максимальное разрешение устройства с использованием dpi или dpcm |
макс. Ширина | Максимальная ширина области отображения, например окна браузера |
мин. Соотношение сторон | Минимальное соотношение ширины и высоты области отображения |
мин-цвет | Минимальное количество бит на компонент цвета для устройства вывода |
минимальный индекс цвета | Минимальное количество цветов, которое может отображать устройство |
мин-высота | Минимальная высота области отображения, например окна браузера |
мин-монохромный | Минимальное количество бит на «цвет» на монохромном (в оттенках серого) устройстве |
мин-разрешение | Минимальное разрешение устройства с использованием dpi или dpcm |
мин. Ширина | Минимальная ширина области отображения, например окна браузера |
монохромный | Число битов на «цвет» на монохромном (в оттенках серого) устройстве |
ориентация | Ориентация области просмотра (альбомный или портретный режим) |
блок переполнения | Как устройство вывода обрабатывает содержимое, которое выходит за пределы области просмотра вдоль оси блока (добавлено в Media Queries Level 4) |
переполнение в линию | Можно ли прокручивать содержимое, которое выходит за пределы области просмотра вдоль встроенной оси (добавлено в Media Queries Level 4) |
указатель | Является ли основным механизмом ввода указывающим устройством, и если да, то как это точно? (добавлено в Media Queries Level 4) |
разрешение | Разрешение устройства вывода с использованием dpi или dpcm |
сканирование | Процесс сканирования устройства вывода |
скрипты | Есть скрипты (например,г. JavaScript) доступен? (добавлено на уровне медиа-запросов 4) |
обновить | Как быстро устройство вывода может изменять внешний вид контента (добавлено в Media Queries Level 4) |
ширина | Ширина области просмотра |
Другие примеры
Пример
Скрыть элемент, когда ширина браузера составляет 600 пикселей или меньше:
@media screen и (max-width: 600 пикселей) {
div.пример дисплея {
:
никто;
}
}
Пример
Используйте медиа-запросы, чтобы установить цвет фона на бледно-лиловый, если область просмотра 800 пикселей в ширину или шире, до светло-зеленого, если ширина области просмотра составляет от 400 до 799 пикселей. Если размер области просмотра меньше 400 пикселей, цвет фона будет светло-синим:
корпус {фоновый цвет: светло-голубой;
}
@media screen и (min-width:
400px) {
body {
цвет фона: светло-зеленый;
}
}
@media
экран и (min-width: 800px) {
body {
цвет фона: бледно-лиловый;
}
}
Пример
Создайте адаптивное меню навигации (отображается горизонтально на больших экранах и вертикально на маленьких экранах):
@media screen и (max-width: 600 пикселей) {
.topnav а {
float: нет;
ширина: 100%;
}
}
Пример
Используйте медиа-запросы для создания адаптивного макета столбца:
/ * На экранах шириной 992 пикселей или меньше переход от четырех столбцов к двум столбцы * /@media screen и (max-width: 992px) {
.column {
ширина: 50%;
}
}
/ * На экранах шириной 600 пикселей или менее столбцы должны располагаться в стопке.
друг на друга, а не рядом друг с другом * /
@media screen и (max-width:
600 пикселей) {
.столбец {
ширина: 100%;
}
}
Пример
Медиа-запросы также можно использовать для изменения макета страницы в зависимости от ориентация браузера. У вас может быть набор свойств CSS, который будет только применяется, когда ширина окна браузера превышает его высоту, так называемый «ландшафтный» ориентация.
Используйте светло-голубой цвет фона, если ориентация в альбомном режиме:
@media только экран и (ориентация:
пейзаж) {
кузов {
цвет фона: светло-голубой;
}
}
Пример
Используйте медиа-запросы, чтобы установить зеленый цвет текста, когда документ отображается на экране, и черным при печати:
@media screen {body {
) цвет: зеленый;
}
}
@media print {
корпус {
цвет: черный;
}
}
Пример
Список, разделенный запятыми : добавьте дополнительный медиа-запрос к уже существующему, используя запятую (это будет действовать как оператор ИЛИ):
/ * Если ширина составляет от 600 до 900 пикселей ИЛИ больше 1100 пикселей — измените внешний вид экрана
@media и (max-width: 900px) и (минимальная ширина: 600 пикселей), (минимальная ширина: 1100 пикселей) {
div.пример {
размер шрифта: 50 пикселей;
отступ: 50 пикселей;
граница: сплошной черный цвет 8 пикселей;
фон: желтый;
}
}
Попробуй сам »
Связанные страницы
Учебное пособие по CSS: Медиа-запросы CSS
Учебное пособие по CSS: примеры медиа-запросов CSS
Учебное пособиеRWD: адаптивный веб-дизайн с медиа-запросами
Учебное пособие по JavaScript: метод window.matchMedia ()
Использование медиа-запросов — CSS: каскадные таблицы стилей
Медиа-запросы полезны, когда вы хотите изменить свой сайт или приложение в зависимости от общего типа устройства (например, печать илиэкран) или конкретные характеристики и параметры (например, разрешение экрана или ширина области просмотра браузера).
Медиа-запросы используются для следующего:
Примечание: В примерах на этой странице используется CSS @media
в иллюстративных целях, но основной синтаксис остается одинаковым для всех типов медиа-запросов.
Медиа-запрос состоит из необязательного медиа-типа и любого количества медиа-функций выражений. Несколько запросов можно комбинировать различными способами, используя логические операторы .Медиа-запросы нечувствительны к регистру.
Медиа-запрос вычисляется как истина, если тип мультимедиа (если указан) соответствует устройству, на котором отображается документ. и все выражения мультимедийных характеристик вычисляются как истинные. Запросы с неизвестными типами носителей всегда ложны.
Примечание: Таблица стилей с медиа-запросом, прикрепленным к ее тегу
, все равно будет загружаться, даже если запрос вернет false. Тем не менее, его содержимое не будет применяться до тех пор, пока результат запроса не изменится на true.
Типы носителей
Типы носителей описывают общую категорию устройства. За исключением случаев, когда используются логические операторы , а не
или , только логические операторы
, тип носителя является необязательным, и подразумевается тип все
.
-
все
- Подходит для всех устройств.
-
печать
- Предназначен для постраничных материалов и документов, просматриваемых на экране в режиме предварительного просмотра. (Информацию о проблемах форматирования, характерных для этих форматов, см. На страничном носителе.)
-
экран
- В основном предназначен для экранов.
-
речь
- Предназначен для синтезаторов речи.
Примечание: CSS2.1 и Media Queries 3 определили несколько дополнительных типов мультимедиа ( tty
, tv
, projection
, handheld
, braille
, с тиснением
и aural
), но они были объявлены устаревшими в Media Queries 4 и не должны использоваться.Тип слуховой
был заменен на аналогичный речевой
.
Функции мультимедиа
Функции мультимедиа описывают конкретные характеристики пользовательского агента, устройства вывода или среды. Выражения медиа-функций проверяют их наличие или ценность и являются совершенно необязательными. Каждое выражение медиа-функции должно быть заключено в круглые скобки.
Имя | Сводка | Банкноты |
---|---|---|
любое наведение | Позволяет ли какой-либо доступный механизм ввода наводить курсор на элементы? | Добавлено в Media Queries Level 4. |
любой указатель | Является ли какой-либо доступный механизм ввода указывающим устройством, и если да, насколько он точен? | Добавлено в медиа-запросы уровня 4. |
соотношение сторон | Соотношение ширины и высоты области просмотра | |
цвет | Число битов на компонент цвета устройства вывода или ноль, если устройство не цветное | |
цветовая гамма | Приблизительный диапазон цветов, поддерживаемых пользовательским агентом и устройством вывода | Добавлено в Media Queries Level 4. |
индекс цвета | Число записей в поисковой таблице цветов устройства вывода или ноль, если устройство не использует такую таблицу | |
Соотношение сторон устройства | Соотношение ширины и высоты устройства вывода | Не рекомендуется в медиа-запросах уровня 4. |
высота устройства | Высота поверхности рендеринга устройства вывода | Не рекомендуется в медиа-запросах уровня 4. |
ширина устройства | Ширина поверхности рендеринга устройства вывода | Не рекомендуется в медиа-запросах уровня 4. |
режим отображения | Режим отображения приложения, как указано в манифесте веб-приложения display member | Определено в спецификации манифеста веб-приложения. |
принудительные цвета | Определить, ограничивает ли пользовательский агент цветовую палитру | Добавлено в Media Queries Level 5. |
сетка | Использует ли устройство сетку или растровый экран? | |
высота | Высота области просмотра | |
наведение | Позволяет ли основной механизм ввода пользователю наводить курсор на элементы? | Добавлено в медиа-запросы уровня 4. |
инвертированные цвета | Инвертирует ли цвета пользовательский агент или базовая ОС? | Добавлено в Media Queries Level 5. |
монохромный | Бит на пиксель в буфере монохромных кадров устройства вывода или ноль, если устройство не монохромное | |
ориентация | Ориентация области просмотра | |
блок переполнения | Как устройство вывода обрабатывает контент, который выходит за пределы области просмотра по оси блока? | Добавлено в Media Queries Level 4. |
встроенный переполнение | Можно ли прокручивать содержимое, которое выходит за пределы области просмотра по встроенной оси? | Добавлено в медиа-запросы уровня 4. |
указатель | Является ли основной механизм ввода указательным устройством, и если да, то насколько он точен? | Добавлено в медиа-запросы уровня 4. |
предпочитает цветовую схему | Определить, предпочитает ли пользователь светлую или темную цветовую схему | Добавлено в Media Queries Level 5. |
предпочитает контраст | Определяет, запросил ли пользователь систему увеличения или уменьшения контрастности между соседними цветами | Добавлено в медиа-запросы, уровень 5. |
предпочитает уменьшенное движение | Пользователь предпочитает меньше движения на странице | Добавлено в медиа-запросы, уровень 5. |
разрешение | Плотность пикселей устройства вывода | |
сценарии | Определяет, выполняются ли сценарии (т.е.е. JavaScript) доступно | Добавлено в медиа-запросы, уровень 5. |
обновить | Как часто устройство вывода может изменять внешний вид контента | Добавлено в медиа-запросы уровня 4. |
ширина | Ширина области просмотра, включая ширину полосы прокрутки |
Логические операторы
Логические операторы , а не
, и
, и только
могут использоваться для составления сложного медиа-запроса.Вы также можете объединить несколько медиа-запросов в одно правило, разделив их запятыми.
и
Операторы и
используются для объединения нескольких мультимедийных функций в один мультимедийный запрос, требуя, чтобы каждая связанная функция возвращала истину, чтобы запрос был истинным. Он также используется для объединения функций мультимедиа с типами мультимедиа.
не
Оператор , а не
используется для отрицания медиа-запроса, возвращая истину, если в противном случае запрос вернул бы ложь.Если он присутствует в списке запросов, разделенных запятыми, он будет отрицать только конкретный запрос, к которому он применяется. Если вы используете оператор , а не
, вы также должны указать тип носителя.
Примечание: На уровне 3 ключевое слово , а не
не может использоваться для отрицания отдельного выражения мультимедийной функции, только для всего мультимедийного запроса.
только
Оператор only
используется для применения стиля, только если весь запрос соответствует, и полезен для предотвращения применения выбранных стилей в старых браузерах.Если не использовать только
, старые браузеры будут интерпретировать запрос screen и (max-width: 500px)
как screen
, игнорируя остальную часть запроса и применяя его стили на всех экранах. Если вы используете оператор only
, вы должны также указать тип носителя.
,
(запятая) Запятые используются для объединения нескольких медиа-запросов в одно правило. Каждый запрос в списке, разделенном запятыми, обрабатывается отдельно от других.Таким образом, если какой-либо из запросов в списке верен, весь оператор мультимедиа возвращает истину. Другими словами, списки ведут себя как логические операторы или
.
Типы носителей описывают общую категорию данного устройства. Хотя веб-сайты обычно разрабатываются с учетом экранов, вы можете создать стили, ориентированные на специальные устройства, такие как принтеры или программы чтения с экрана на основе звука. Например, этот CSS нацелен на принтеры:
Вы также можете настроить таргетинг на несколько устройств. Например, это правило @media
использует два медиа-запроса для таргетинга как на экран, так и на устройства печати:
@media screen, print {...}
Список всех типов носителей см. В разделе «Типы носителей». Поскольку они описывают устройства очень широко, доступны лишь некоторые из них; для нацеливания на более конкретные атрибуты используйте вместо этого медиа-функции .
Функции мультимедиа описывают конкретные характеристики данного пользовательского агента, устройства вывода или среды. Например, вы можете применить определенные стили к широкоэкранным мониторам, компьютерам, использующим мыши, или устройствам, которые используются в условиях низкой освещенности.В этом примере применяются стили, когда основной механизм ввода пользователя (например, мышь) может наводить курсор на элементы:
@media (hover: hover) {...}
Многие мультимедийные функции — это , диапазон функций , что означает, что они могут иметь префикс «min-» или «max-» для выражения ограничений «минимального условия» или «максимального условия». Например, этот CSS будет применять стили только в том случае, если ширина области просмотра вашего браузера равна или меньше 12450 пикселей:
@media (max-width: 12450px) {...}
Если вы создаете запрос мультимедийной функции без указания значения, вложенные стили будут использоваться до тех пор, пока значение функции не равно нулю (или нет
на уровне 4). Например, этот CSS будет применяться к любому устройству с цветным экраном:
Если функция не применяется к устройству, на котором запущен браузер, выражения, включающие эту мультимедийную функцию, всегда ложны. Например, стили, вложенные в следующий запрос, никогда не будут использоваться, потому что ни одно устройство только для речи не имеет соотношения сторон экрана:
@media speech and (соотношение сторон: 11/5) {...}
Дополнительные примеры мультимедийных функций см. На справочной странице для каждой конкретной функции.
Иногда может потребоваться создать медиа-запрос, который зависит от нескольких условий. Именно здесь используются логические операторы : , а не
, и
, а - только
. Кроме того, вы можете объединить несколько медиа-запросов в список , разделенных запятыми, ; это позволяет применять одни и те же стили в разных ситуациях.
В предыдущем примере мы уже видели операторы и
, используемые для группировки носителя типа с функцией носителя .Операторы и
также могут объединить несколько мультимедийных функций в один мультимедийный запрос. Между тем, оператор , а не
, отрицает медиа-запрос, в основном меняя его обычное значение. Оператор only
не позволяет более старым браузерам применять стили.
Примечание: В большинстве случаев тип носителя все
используется по умолчанию, если другой тип не указан. Однако, если вы используете операторы , а не
или только ,
, вы должны явно указать тип носителя.
Объединение нескольких типов или функций
Ключевое слово и
объединяет функцию мультимедиа с типом носителя или другими функциями мультимедиа. В этом примере объединены две мультимедийные функции, чтобы ограничить стили для устройств с альбомной ориентацией и шириной не менее 30 ems:
@media (min-width: 30em) и (ориентация: альбомная) {...}
Чтобы ограничить стили устройствами с экраном, вы можете связать функции мультимедиа с экраном
Тип носителя:
@media screen и (min-width: 30em) и (ориентация: альбомная) {...}
Тестирование для нескольких запросов
Вы можете использовать список, разделенный запятыми, для применения стилей, когда устройство пользователя соответствует любому из различных типов, функций или состояний мультимедиа. Например, следующее правило будет применять свои стили, если устройство пользователя имеет минимальную высоту 680 пикселей или является экранным устройством в портретном режиме:
@media (min-height: 680px), экран и (ориентация: книжная) {...}
В приведенном выше примере, если у пользователя есть принтер с высотой страницы 800 пикселей, оператор мультимедиа вернет истину, потому что будет применяться первый запрос.Точно так же, если бы пользователь находился на смартфоне в портретном режиме с высотой области просмотра 480 пикселей, будет применяться второй запрос, и оператор мультимедиа все равно вернет истину.
Инвертирование значения запроса
Ключевое слово , а не
инвертирует значение всего медиа-запроса. Он только аннулирует конкретный медиа-запрос, к которому он применяется. (Таким образом, это не будет применяться к каждому медиа-запросу в списке медиа-запросов, разделенных запятыми.) Ключевое слово , а не
не может использоваться для отрицания отдельного запроса функции, только всего медиа-запроса., а не
, оценивается последним в следующем запросе:
@media not all and (монохромный) {...}
… так что вышеупомянутый запрос оценивается так:
@media not (all and (монохромный)) {...}
… а не так:
@media (не все) и (монохромный) {...}
В качестве другого примера приведем следующий медиа-запрос:
@media not screen and (color), print and (color) {...}
… оценивается так:
@media (not (screen and (color))), print and (color) {...}
Улучшение совместимости со старыми браузерами
Ключевое слово only
предотвращает использование старых браузеров, которые не поддерживают медиа-запросы, с мультимедийные функции от применения заданных стилей. Не влияет на современные браузеры.
@media only screen and (color) {...}
Спецификация Media Queries Level 4 включает некоторые улучшения синтаксиса, чтобы сделать медиа-запросы с использованием функций, которые имеют тип «диапазон», например ширину или высоту, менее подробными.Уровень 4 добавляет контекст диапазона для написания таких запросов. Например, используя функциональность max-
для ширины, мы можем написать следующее:
Примечание: Спецификация Media Queries Level 4 имеет разумную поддержку в современных браузерах, но некоторые мультимедийные функции не поддерживаются должным образом. См. Более подробную информацию в таблице совместимости браузеров @media
.
@media (макс. Ширина: 30 мкм) {...}
В Media Queries Level 4 это можно записать как:
@media (ширина <= 30em) {...}
Используя min-
и max-
, мы можем проверить ширину между двумя значениями, например:
@media (min-width: 30em) и (max-width: 50em) {...}
Это преобразует синтаксис уровня 4 как:
@media (30em <= width <= 50em) {...}
Media Queries Level 4 также добавляет способы комбинировать медиа-запросы с использованием полной логической алгебры с и , не и или .
Отрицание признака с помощью
not
Использование not ()
вокруг мультимедийного объекта отменяет этот признак в запросе. Например, not (hover)
будет соответствовать, если устройство не имеет возможности зависания:
@media (not (hover)) {...}
Тестирование нескольких функций с помощью
или
Вы можете использовать или
для проверки совпадения более чем одной функции, возвращаясь к true
если какая-либо из характеристик верна.Например, следующие тесты запросов для устройств с монохромным дисплеем или возможностью наведения:
@media (not (color)) or (hover) {...}
Медиа-запросы для стандартных устройств
Если ты думаешь, что отзывчивость - это просто, мне жаль тебя, сынок. У нас 99 окон просмотра, но у iPhone только одно.
- Джош Брюэр, 10 марта 2010 г.
Основным компонентом адаптивного дизайна является создание правильного интерфейса для правильного устройства. С миллионом различных устройств на рынке это может оказаться непростой задачей.Мы собрали медиа-запросы, которые можно использовать для таргетинга на проекты для многих стандартных и популярных устройств, которые, безусловно, стоит прочитать.
Если вы ищете исчерпывающий список медиа-запросов, этот репозиторий - хороший ресурс.
Если вы отреагируете на это: , вы никогда не должны основывать точки останова на устройствах !! Вы подметили. У Джастина Эйвери есть хороший пост о возможных подводных камнях при использовании точек останова для конкретных устройств. Выбор точек останова на основе вашего дизайна, а не конкретных устройств - это разумный способ.Но иногда вам просто нужна небольшая помощь, чтобы взять под контроль одну конкретную ситуацию.
Телефоны и карманные компьютеры
iPhone / * ----------- iPhone 4 и 4S ----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 320 пикселей)
и (максимальная ширина устройства: 480 пикселей)
и (-webkit-min-device-pixel-ratio: 2) {
}
/ * Портрет * /
только экран @media
и (минимальная ширина устройства: 320 пикселей)
и (максимальная ширина устройства: 480 пикселей)
и (-webkit-min-device-pixel-ratio: 2)
и (ориентация: портретная) {
}
/* Пейзаж */
только экран @media
и (минимальная ширина устройства: 320 пикселей)
и (максимальная ширина устройства: 480 пикселей)
и (-webkit-min-device-pixel-ratio: 2)
и (ориентация: альбомная) {
}
/ * ----------- iPhone 5, 5S, 5C и 5SE ----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 320 пикселей)
и (максимальная ширина устройства: 568 пикселей)
и (-webkit-min-device-pixel-ratio: 2) {
}
/ * Портрет * /
только экран @media
и (минимальная ширина устройства: 320 пикселей)
и (максимальная ширина устройства: 568 пикселей)
и (-webkit-min-device-pixel-ratio: 2)
и (ориентация: портретная) {
}
/* Пейзаж */
только экран @media
и (минимальная ширина устройства: 320 пикселей)
и (максимальная ширина устройства: 568 пикселей)
и (-webkit-min-device-pixel-ratio: 2)
и (ориентация: альбомная) {
}
/ * ----------- iPhone 6, 6S, 7 и 8 ----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 375 пикселей)
и (максимальная ширина устройства: 667 пикселей)
и (-webkit-min-device-pixel-ratio: 2) {
}
/ * Портрет * /
только экран @media
и (минимальная ширина устройства: 375 пикселей)
и (максимальная ширина устройства: 667 пикселей)
и (-webkit-min-device-pixel-ratio: 2)
и (ориентация: портретная) {
}
/* Пейзаж */
только экран @media
и (минимальная ширина устройства: 375 пикселей)
и (максимальная ширина устройства: 667 пикселей)
и (-webkit-min-device-pixel-ratio: 2)
и (ориентация: альбомная) {
}
/ * ----------- iPhone 6+, 7+ и 8+ ----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 414 пикселей)
и (максимальная ширина устройства: 736 пикселей)
и (-webkit-min-device-pixel-ratio: 3) {
}
/ * Портрет * /
только экран @media
и (минимальная ширина устройства: 414 пикселей)
и (максимальная ширина устройства: 736 пикселей)
и (-webkit-min-device-pixel-ratio: 3)
и (ориентация: портретная) {
}
/* Пейзаж */
только экран @media
и (минимальная ширина устройства: 414 пикселей)
и (максимальная ширина устройства: 736 пикселей)
и (-webkit-min-device-pixel-ratio: 3)
и (ориентация: альбомная) {
}
/ * ----------- iPhone X ----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 375 пикселей)
и (максимальная ширина устройства: 812 пикселей)
и (-webkit-min-device-pixel-ratio: 3) {
}
/ * Портрет * /
только экран @media
и (минимальная ширина устройства: 375 пикселей)
и (максимальная ширина устройства: 812 пикселей)
и (-webkit-min-device-pixel-ratio: 3)
и (ориентация: портретная) {
}
/* Пейзаж */
только экран @media
и (минимальная ширина устройства: 375 пикселей)
и (максимальная ширина устройства: 812 пикселей)
и (-webkit-min-device-pixel-ratio: 3)
и (ориентация: альбомная) {
}
Телефоны Galaxy / * ----------- Galaxy S3 ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 2) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 320 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 2)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 320 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 2)
и (ориентация: альбомная) {
}
/ * ----------- Galaxy S4, S5 и Примечание 3 ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 320 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 3) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 320 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 3)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 320 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 3)
и (ориентация: альбомная) {
}
/ * ----------- Galaxy S6 ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 4) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 4)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 4)
и (ориентация: альбомная) {
}
Телефоны HTC / * ----------- HTC One ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 3) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 3)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 3)
и (ориентация: альбомная) {
}
Google Pixel / * ----------- Google Pixel ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 3) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 3)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 3)
и (ориентация: альбомная) {
}
/ * ----------- Google Pixel XL ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 4) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 4)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 640 пикселей)
и (-webkit-device-pixel-ratio: 4)
и (ориентация: альбомная) {
}
Телефоны Nexus / * ----------- Nexus 4 ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 384 пикселей)
и (высота устройства: 592 пикселей)
и (-webkit-device-pixel-ratio: 2) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 384 пикселей)
и (высота устройства: 592 пикселей)
и (-webkit-device-pixel-ratio: 2)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 384 пикселей)
и (высота устройства: 592 пикселей)
и (-webkit-device-pixel-ratio: 2)
и (ориентация: альбомная) {
}
/* ----------- Нексус 5 ----------- */
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 592 пикселей)
и (-webkit-device-pixel-ratio: 3) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 592 пикселей)
и (-webkit-device-pixel-ratio: 3)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 592 пикселей)
и (-webkit-device-pixel-ratio: 3)
и (ориентация: альбомная) {
}
/ * ----------- Nexus 6 и 6P ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 592 пикселей)
и (-webkit-device-pixel-ratio: 4) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 592 пикселей)
и (-webkit-device-pixel-ratio: 4)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 360 пикселей)
и (высота устройства: 592 пикселей)
и (-webkit-device-pixel-ratio: 4)
и (ориентация: альбомная) {
}
Windows Phone / * ----------- Windows Phone ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 480 пикселей)
and (device-height: 800px) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 480 пикселей)
и (высота устройства: 800 пикселей)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 480 пикселей)
и (высота устройства: 800 пикселей)
и (ориентация: альбомная) {
}
Ноутбуки
Media Queries для ноутбуков - это своего рода джаггернаут.Вместо того, чтобы нацеливаться на определенные устройства, попробуйте указать общий диапазон размеров экрана, а затем различать экраны сетчатки и экраны без сетчатки.
/ * ----------- Экраны без Retina ----------- * /
@media экран
и (минимальная ширина устройства: 1200 пикселей)
и (максимальная ширина устройства: 1600 пикселей)
и (-webkit-min-device-pixel-ratio: 1) {
}
/ * ----------- Экраны Retina ----------- * /
@media экран
и (минимальная ширина устройства: 1200 пикселей)
и (максимальная ширина устройства: 1600 пикселей)
и (-webkit-min-device-pixel-ratio: 2)
и (минимальное разрешение: 192 точек на дюйм) {
}
Таблетки
iPad / * ----------- iPad 1, 2, Mini и Air ----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 768 пикселей)
и (максимальная ширина устройства: 1024 пикселей)
и (-webkit-min-device-pixel-ratio: 1) {
}
/ * Портрет * /
только экран @media
и (минимальная ширина устройства: 768 пикселей)
и (максимальная ширина устройства: 1024 пикселей)
и (ориентация: портретная)
и (-webkit-min-device-pixel-ratio: 1) {
}
/* Пейзаж */
только экран @media
и (минимальная ширина устройства: 768 пикселей)
и (максимальная ширина устройства: 1024 пикселей)
и (ориентация: альбомная)
и (-webkit-min-device-pixel-ratio: 1) {
}
/ * ----------- iPad 3, 4 и Pro 9.7 дюймов ----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 768 пикселей)
и (максимальная ширина устройства: 1024 пикселей)
и (-webkit-min-device-pixel-ratio: 2) {
}
/ * Портрет * /
только экран @media
и (минимальная ширина устройства: 768 пикселей)
и (максимальная ширина устройства: 1024 пикселей)
и (ориентация: портретная)
и (-webkit-min-device-pixel-ratio: 2) {
}
/* Пейзаж */
только экран @media
и (минимальная ширина устройства: 768 пикселей)
и (максимальная ширина устройства: 1024 пикселей)
и (ориентация: альбомная)
и (-webkit-min-device-pixel-ratio: 2) {
}
/ * ----------- iPad Pro 10.5 "----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 834 пикселей)
и (максимальная ширина устройства: 1112 пикселей)
и (-webkit-min-device-pixel-ratio: 2) {
}
/ * Портрет * /
/ * Объявляем одно и то же значение для минимальной и максимальной ширины, чтобы избежать столкновения с рабочими столами * /
/ * Источник: https://medium.com/connect-the-dots/css-media-queries-for-ipad-pro-8cad10e17106*/
только экран @media
и (минимальная ширина устройства: 834 пикселей)
и (максимальная ширина устройства: 834 пикселей)
и (ориентация: портретная)
и (-webkit-min-device-pixel-ratio: 2) {
}
/* Пейзаж */
/ * Объявляем одно и то же значение для минимальной и максимальной ширины, чтобы избежать столкновения с рабочими столами * /
/ * Источник: https: // medium.com / connect-the-dots / css-media-query-for-ipad-pro-8cad10e17106 * /
только экран @media
и (минимальная ширина устройства: 1112 пикселей)
и (максимальная ширина устройства: 1112 пикселей)
и (ориентация: альбомная)
и (-webkit-min-device-pixel-ratio: 2) {
}
/ * ----------- iPad Pro 12.9 "----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 1024 пикселей)
и (максимальная ширина устройства: 1366 пикселей)
и (-webkit-min-device-pixel-ratio: 2) {
}
/ * Портрет * /
/ * Объявляем одно и то же значение для минимальной и максимальной ширины, чтобы избежать столкновения с рабочими столами * /
/ * Источник: https: // medium.com / connect-the-dots / css-media-query-for-ipad-pro-8cad10e17106 * /
только экран @media
и (минимальная ширина устройства: 1024 пикселей)
и (максимальная ширина устройства: 1024 пикселей)
и (ориентация: портретная)
и (-webkit-min-device-pixel-ratio: 2) {
}
/* Пейзаж */
/ * Объявляем одно и то же значение для минимальной и максимальной ширины, чтобы избежать столкновения с рабочими столами * /
/ * Источник: https://medium.com/connect-the-dots/css-media-queries-for-ipad-pro-8cad10e17106*/
только экран @media
и (минимальная ширина устройства: 1366 пикселей)
и (максимальная ширина устройства: 1366 пикселей)
и (ориентация: альбомная)
и (-webkit-min-device-pixel-ratio: 2) {
}
Планшеты Galaxy / * ----------- Galaxy Tab 2 ----------- * /
/ * Портрет и пейзаж * /
@СМИ
(минимальная ширина устройства: 800 пикселей)
and (max-device-width: 1280 пикселей) {
}
/ * Портрет * /
@СМИ
(максимальная ширина устройства: 800 пикселей)
и (ориентация: портретная) {
}
/* Пейзаж */
@СМИ
(максимальная ширина устройства: 1280 пикселей)
и (ориентация: альбомная) {
}
/ * ----------- Galaxy Tab S ----------- * /
/ * Портрет и пейзаж * /
@СМИ
(минимальная ширина устройства: 800 пикселей)
и (максимальная ширина устройства: 1280 пикселей)
и (-webkit-min-device-pixel-ratio: 2) {
}
/ * Портрет * /
@СМИ
(максимальная ширина устройства: 800 пикселей)
и (ориентация: портретная)
и (-webkit-min-device-pixel-ratio: 2) {
}
/* Пейзаж */
@СМИ
(максимальная ширина устройства: 1280 пикселей)
и (ориентация: альбомная)
и (-webkit-min-device-pixel-ratio: 2) {
}
Планшеты Nexus / * ----------- Nexus 7 ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 601 пикселей)
и (высота устройства: 906 пикселей)
и (-webkit-min-device-pixel-ratio: 1.331)
и (-webkit-max-device-pixel-ratio: 1.332) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 601 пикселей)
и (высота устройства: 906 пикселей)
и (-webkit-min-device-pixel-ratio: 1.331)
и (-webkit-max-device-pixel-ratio: 1.332)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 601 пикселей)
и (высота устройства: 906 пикселей)
и (-webkit-min-device-pixel-ratio: 1.331)
и (-webkit-max-device-pixel-ratio: 1.332)
и (ориентация: альбомная) {
}
/ * ----------- Nexus 9 ----------- * /
/ * Портрет и пейзаж * /
@media экран
и (ширина устройства: 1536 пикселей)
и (высота устройства: 2048 пикселей)
и (-webkit-min-device-pixel-ratio: 1.331)
и (-webkit-max-device-pixel-ratio: 1.332) {
}
/ * Портрет * /
@media экран
и (ширина устройства: 1536 пикселей)
и (высота устройства: 2048 пикселей)
и (-webkit-min-device-pixel-ratio: 1.331)
и (-webkit-max-device-pixel-ratio: 1.332)
и (ориентация: портретная) {
}
/* Пейзаж */
@media экран
и (ширина устройства: 1536 пикселей)
и (высота устройства: 2048 пикселей)
и (-webkit-min-device-pixel-ratio: 1.331)
и (-webkit-max-device-pixel-ratio: 1.332)
и (ориентация: альбомная) {
}
Kindle Fire / * ----------- Kindle Fire HD 7 "----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 800 пикселей)
и (максимальная ширина устройства: 1280 пикселей)
и (-webkit-min-device-pixel-ratio: 1.5) {
}
/ * Портрет * /
только экран @media
и (минимальная ширина устройства: 800 пикселей)
и (максимальная ширина устройства: 1280 пикселей)
и (-webkit-min-device-pixel-ratio: 1.5)
и (ориентация: портретная) {
}
/* Пейзаж */
только экран @media
и (минимальная ширина устройства: 800 пикселей)
и (максимальная ширина устройства: 1280 пикселей)
и (-webkit-min-device-pixel-ratio: 1.5)
и (ориентация: альбомная) {
}
/ * ----------- Kindle Fire HD 8.9 "----------- * /
/ * Портрет и пейзаж * /
только экран @media
и (минимальная ширина устройства: 1200 пикселей)
и (максимальная ширина устройства: 1600 пикселей)
и (-webkit-min-device-pixel-ratio: 1.5) {
}
/ * Портрет * /
только экран @media
и (минимальная ширина устройства: 1200 пикселей)
и (максимальная ширина устройства: 1600 пикселей)
и (-webkit-min-device-pixel-ratio: 1.5)
и (ориентация: портретная) {
}
/* Пейзаж */
только экран @media
и (минимальная ширина устройства: 1200 пикселей)
и (максимальная ширина устройства: 1600 пикселей)
и (-webkit-min-device-pixel-ratio: 1.5)
и (ориентация: альбомная) {
}
Платформа приложений
Быстрое создание, развертывание и масштабирование приложений с помощью простого, полностью управляемого решения.Мы займемся инфраструктурой, временем выполнения приложений и зависимостями, чтобы вы могли запустить код в рабочую среду всего за несколько щелчков мышью.
Носимые устройства
/ * ----------- Часы Moto 360 ----------- * /
@СМИ
(максимальная ширина устройства: 218 пикселей)
and (max-device-height: 281px) {
}
медиа-запросов CSS и использование доступного пространства
Мы рассмотрели использование медиа-запросов CSS для назначения различных таблиц стилей в зависимости от размера окна браузера. В этом примере мы изменили макет всей страницы в зависимости от доступного места.Тем не менее, не требуется, чтобы мы вносили такие радикальные изменения в эту технику, поэтому в этом руководстве мы рассмотрим настройку дизайна с меньшим объемом. Мы также рассмотрим синтаксис использования медиа-запросов в одной таблице стилей и другие примеры этого.
Синтаксис медиа-запроса CSS для вызова внешней таблицы стилей выглядит следующим образом:
Возможно, вам знаком атрибут мультимедиа, обычно это «экран» или «печать», или даже список, разделенный запятыми, например «экран, проекция».Атрибут media может быть перенесен непосредственно в файл CSS, например:
@media screen {
тело {
ширина: 75%;
}
}
@media print {
тело {
ширина: 100%;
}
}
Точно так же вы можете использовать более сложные медиа-запросы CSS, например:
@media all and (max-width: 699px) and (min-width: 520px), (min-width: 1151px) {
тело {
фон: #ccc;
}
}
Вы можете использовать столько медиа-запросов, сколько хотите в файле CSS.Обратите внимание, что вы можете использовать операторы и , чтобы требовать, чтобы несколько запросов были истинными, но вы должны использовать запятую (,) в качестве оператора или для разделения групп из нескольких запросов. Ключевое слово , а не также может использоваться для изменения логики.
Пример
Допустим, у нас есть дизайн с плавной шириной, в котором боковая панель составляет 35% ширины страницы. Это означает, что в зависимости от ширины окна браузера эта боковая панель может быть довольно узкой или довольно широкой, что является характерной чертой дизайна с изменяемой шириной.С помощью медиа-запросов CSS мы можем сказать: «Если браузер действительно узкий, сделайте это, если он шире, сделайте это, если он действительно широкий, сделайте это». Обратите внимание, что измерение ширины - это не единственное, что могут делать медиа-запросы, это просто практический пример.
На боковой панели нашего примера у нас будет список имен суперкоманды, которые функционируют как ссылки для электронной почты. HTML довольно прост:
Это просто список ссылок.Атрибут href
представляет собой ссылку mailto:
. Единственное, что может показаться вам необычным, - это атрибут data-email
. В HTML5 вы можете использовать атрибуты с префиксом data-
для хранения информации, и это совершенно верно. Мы собираемся использовать эти данные позже, но значение href
- это не совсем то, что нам нужно, имея ссылку mailto:
, следовательно, атрибут данных.
Стиль по умолчанию для списка будет следующим:
#sidebar ul li a {
цвет: # 900;
текстовое оформление: нет;
отступ: 3px 0;
дисплей: блок;
}
При узкой ширине окна браузера применяется стиль по умолчанию.Просто список ссылок.Когда браузер станет немного шире, в нашем примере от 520 до 699 пикселей, мы собираемся использовать это дополнительное пространство, которое открывается на боковой панели, чтобы применить значок электронной почты к каждому элементу списка.
@media all and (max-width: 699px) and (min-width: 520px) {
#sidebar ul li a {
отступ слева: 21px;
фон: url (../ images / email.png) левый центр без повтора;
}
}
Иконки применяются к элементам списка, поскольку мы знаем, что теперь у нас есть место для них.По мере того, как мы становимся шире, с 700 до 1000 пикселей, мы снова будем использовать дополнительное пространство, чтобы добавить перед ссылками текст «Электронная почта:» (с использованием содержимого CSS) вместо просто значка.
@media all and (max-width: 1000px) and (min-width: 700px) {
#sidebar ul li a: before {
содержание: «Электронная почта:»;
стиль шрифта: курсив;
цвет: # 666;
}
}
Используя элемент CSS content / psuedo, мы можем добавить к ссылке описательный текст без изменения содержимого в HTML. Еще шире, при ширине окна браузера выше 1001 пикселей мы буквально добавляем адрес электронной почты к ссылкам.Вот здесь-то и пригодится атрибут данных HTML5.
@media all and (min-width: 1001px) {
#sidebar ul li a: after {
content: "(" attr (data-email) ")";
размер шрифта: 11 пикселей;
стиль шрифта: курсив;
цвет: # 666;
}
}
Опять же, контент корректируется, электронное письмо добавляется как псевдоэлемент исключительно с помощью CSS.При действительно широкой ширине, выше 1151 пикселей, мы снова добавим значок, как мы использовали раньше. Крутая часть здесь заключается в том, что нам не нужно писать дополнительный сегмент медиа-запроса, мы можем просто добавить дополнительный медиа-запрос к уже существующему, используя запятую (ведет себя как оператор ИЛИ) на уже написанном средней ширине. .
@media all and (max-width: 699px) and (min-width: 520px), (min-width: 1151px) {
#sidebar ul li a {
отступ слева: 21px;
фон: url (../ images / email.png) левый центр без повтора;
}
}
В самом широком смысле мы можем использовать все имеющееся чутье.Теперь все вместе
#sidebar ul li a {
цвет: # 900;
текстовое оформление: нет;
отступ: 3px 0;
дисплей: блок;
}
@media all and (min-width: 1001px) {
#sidebar ul li a: after {
content: "(" attr (data-email) ")";
размер шрифта: 11 пикселей;
стиль шрифта: курсив;
цвет: # 666;
}
}
@media all and (max-width: 1000px) и (min-width: 700px) {
#sidebar ul li a: before {
содержание: «Электронная почта:»;
стиль шрифта: курсив;
цвет: # 666;
}
}
@media all and (max-width: 699px) и (min-width: 520px), (min-width: 1151px) {
#sidebar ul li a {
отступ слева: 21px;
фон: url (../images/email.png) левый центр без повтора;
}
}
Видео-демонстрация
Live demo / скачать
Посмотреть демоверсию Скачать файлы
Поддержка браузера
Браузер поддерживает медиа-запросы на удивление достойно. Что касается запросов в этой конкретной демонстрации (с использованием минимальной и максимальной ширины), текущая версия Firefox, Safari (включая Mobile), Chrome и Opera все это поддерживают.Internet Explorer 9 будет поддерживать его, а 8 и ниже - нет. Если бы я хотел обеспечить наилучшие возможности в IE 8 и ниже, я бы либо подделал его с помощью JavaScript, как в этой статье, либо использовал специальную таблицу стилей IE и стилизовал ее в том же стиле, что и наиболее распространенная ширина браузера в соответствии с в аналитику.
Обратите внимание, что пробег может различаться для отдельных типов запросов. Например, iPhone поддерживает запросы ширины, но не поддерживает запросы ориентации. IPad поддерживает и то, и другое.
Подробнее о медиа-запросах
Измерение ширины - хороший практический пример медиа-запросов, но это не единственное, что доступно. Ниже приведены некоторые из них (не полный список). В спецификации перечислено намного больше.
Типы
ВHTML4 были эти типы мультимедиа, которые все еще действительны: слуховой, шрифт Брайля, портативный, печать, проекция, экран, tty и tv. HTML5 может включать больше, если они ему нужны. В спецификацию включены «3D-очки», что потрясающе. Ключевое слово all будет нацелено на все типы.
@ экран мультимедиа, проекция {...}
Размеры
Вы получаете высоту и ширину, которые запрашивают текущую высоту и ширину окна браузера. Вы можете использовать их как есть, но это, вероятно, будет редкостью. Оба они принимают префиксы min / max, поэтому чаще вы использовали их как min-width, max-width, min-height, max-height.
Также есть ширина устройства и высота устройства, которые также предоставляют минимальную ширину устройства, максимальную ширину устройства, минимальную высоту устройства и максимальную высоту устройства.
@media (min-device-width: 640px) {...}
Соотношение ориентация / формат
Можно запросить соотношение сторон экрана, а также соотношение сторон устройства.
@media screen и (соотношение сторон устройства: 16/9) {...}
Или если экран находится в портретном (высота больше ширины) или альбомном (ширина больше высоты) режиме.
@media (ориентация: книжная) {...}
Цвет
Вы можете узнать, цветной экран или нет, и подробности об этом.
@media (color) {/ * Цветной экран * /}
@media (min-color-index: 256) {/ * На экране не менее 256 цветов * /}
@media (монохромный) {/ * Экран монохромный * /}
В другом месте
В последнее время это горячая тема. Вы можете услышать, как некоторые умные люди говорят об этом на The Big Web Show. Вот еще несколько интересных применений, которые можно найти в последнее время:
- Энди Кларк показывает, как чем больше длина строки, тем более читабельным может быть текст при более высокой высоте строки.
- Сайт Джона Хика перестраивается, чтобы иметь двойные боковые панели, одинарную боковую панель или отсутствие боковой панели в зависимости от доступного места. Он даже прекрасно масштабируется до мобильных размеров.
- Демонстрация Итана Маркотта для A List Apart не использует медиа-запросы, но показывает другие способы, которыми может быть эффективно гибкий дизайн.
- Сайт Саймона Коллисона изменяет свою сетку для соответствия разным размерам браузера.
- Panic использует @media в своих электронных письмах HTML, чтобы они отлично смотрелись в почтовых клиентах для настольных компьютеров или мобильных устройств.
Мин. Ширина, максимальная ширина и запросы мультимедиа | by Banuri Wickramarathna
Медиа-запросы - это концепция, которая играет важную роль в адаптивном веб-дизайне. Под адаптивным веб-дизайном понимается создание веб-страниц, которые могут динамически изменять свой внешний вид в соответствии с экраном пользователя (мобильный, планшет, ноутбук, ПК и т. Д.) С целью улучшения взаимодействия с пользователем. Можно сказать, что это похоже на добавление условий в файл .css.
Синтаксис
@media media-type и (media-feature) {
}
Media types
Это тип категории устройства.Обычно используемые типы носителей - «экраны», «печать».
Функции мультимедиа
Функции мультимедиа Это необязательно в мультимедийных запросах. По сути, это еще больше изменит взаимодействие с пользователем в зависимости от поведения и функций пользователя и устройства вывода. Некоторые часто используемые мультимедийные функции упомянуты ниже.
- Ориентация
- Разрешение
- Соотношение сторон
- Ширина
- Высота
Основное объяснение минимальной и максимальной ширины
Есть другие точки останова для устройств, которые вы можете протестировать.Хотя мы используем термин «экраны устройств», на самом деле мы принимаем во внимание ширину экрана. Из-за этого давайте разберемся с min-width и max-width на небольшом примере.
Min-width:
В приведенном выше примере говорится, что элемент HTML с именем id как «ButtonWrapper» примет ширину 100% (от его родительского элемента), когда ширина устройства больше или равна 1024 пикселей.
Max-width:
max -width означает меньшую или равную ширине, указанной в этом медиа-запросе.Итак, в приведенном выше примере элемент, имеющий «#ButtonWrapper» в качестве идентификатора, получит ширину 70% от ширины всех экранов, которые меньше или равны 1024 пикселям.
Логические операторы
Поскольку эти медиа-запросы известны как своего рода операторы if, мы можем использовать логические операторы, чтобы сделать их более сложными и эффективными. Можно использовать все основные логические операторы, такие как «И», «ИЛИ» и «НЕ». Возьмем по одному.
AND Оператор:
В соответствии с приведенным ниже примером элемент класса «buttonWrapper» будет занимать 70% ширины от всей ширины экрана, которая больше или равна 768 пикселей и меньше или равна 1024 пикселей.Оператор действует как его же корневая функция.
Оператор ИЛИ:
На самом деле это различные медиа-запросы, разделенные запятыми. Разработчики используют это, чтобы уменьшить количество строк кода. Не только это, но и «ИЛИ» можно использовать для медиа-запросов, которые используют общий набор стилей.
Итак, со ссылкой на пример ниже, класс «buttonWrapper» получит 80% ширины для всех экранов, которые больше или равны 768 пикселей по ширине, а также больше или равны 1024 пикселей по ширине.
Оператор NOT:
Это будет применяться к тем местам, где условие в медиа-запросе было ложным.
W Что такое точка останова? Я почти уверен, что теперь вы можете задаться вопросом, что такое точки останова. Это место, где ваш дизайн должен измениться, чтобы выглядеть лучше. Другими словами, ситуация, когда контент начинает выглядеть плохо и трудно читаемым для пользователя, это та точка, где мы должны применить медиа-запрос.
Теперь вы можете запутаться с этими двумя ключевыми словами, медиа-запросом и точкой останова.Это то же самое? да.
Это было краткое введение в то, что такое медиа-запрос, и объяснение того, что на самом деле подразумевается под max-width и min-width, применительно к концепции медиа-запроса. Надеюсь, все ясно.
До следующей статьи! 😊
Как установить диапазон ширины для ваших медиа-запросов CSS
Медиа-запрос - это функция CSS. Он позволяет создавать и реализовывать макеты, которые адаптируются к свойствам используемого вами устройства.Некоторые из этих свойств включают высоту и ширину страницы.
В этом кратком руководстве вы узнаете, как задать несколько свойств ширины в правиле медиа-запроса. А пока давайте сначала взглянем на основы.
Теперь, когда у вас есть базовое представление о том, что такое медиа-запрос, давайте посмотрим, как на самом деле работает эта особенность CSS.
Базовый медиа-запрос выглядит так:
@media only screen and (max-width: 576px) {
// сделай что-нибудь
}
@media only screen и (min-width: 576px) {
// делаем что-то еще раз
}
Это означает, что стили, которые будут записаны в правилах мультимедиа выше, будут работать или будут действовать только при указанных выше свойствах ширины.
Буквально вы говорите, что для этой конкретной ширины (то есть свойства max-width
для 576px
) CSS, пожалуйста, примените стили, которые я буду писать здесь, только к этой ширине, от начальной ширины из 0px
.
Свойства max-width и min-width
При создании медиа-запросов для разных размеров экрана необходимо иметь в виду две вещи: свойства max-width
и min-width
.
Когда свойство max-width
передается в медиа-запрос, CSS интерпретирует его как ширину, начинающуюся с нуля, то есть если свойство минимальной ширины еще не было установлено.Мы скоро к этому дойдем.
Как только свойство max-width
получит присвоенное ему значение, все стили в этом конкретном медиа-запросе будут применены к любому устройству, размер экрана которого составляет от 0 пикселей
до указанной максимальной ширины.
Свойство min-width
, с другой стороны, принимает начальное значение, которое вы ему присвоили, и применяет стили в правиле мультимедиа до тех пор, пока не будет предоставлен следующий max-width
. Скажем, например:
@media only screen and (min-width: 576px) {
// применяем здесь стили, начиная с минимальной ширины
// 576 пикселей (устройства среднего размера)
}
Стили, которые будут записаны в медиа-запросе выше, будут применимы только к устройствам, которые находятся в пределах указанной минимальной ширины и выше.
Только что обсужденный нами метод создания медиа-запросов путем применения только одного свойства width
решает только одну проблему.
Установив «диапазон ширины», вы получаете определенную гибкость при создании макетов, которая обеспечивает гибкость при любой ширине устройства.
Установка определенного «диапазона ширины» ничем не отличается от способа создания медиа-запросов. Единственное отличие состоит в добавлении дополнительных выражений медиа-функций (то есть размеров ширины экрана).
Взгляните:
@media only screen and (min-width: 360px) and (max-width: 768px) {
// делаем что-нибудь в этом диапазоне ширины.
}
Приведенный выше медиа-запрос будет работать только для выражения функции (размер экрана мобильного устройства, для которого вы пишете стиль), указанного выше.
Принимает первое предоставленное выражение ширины как начальное значение, а второе как конечное значение.
Помните, как мы видели разницу между свойством max-width
и min-width
выше? Мы просто говорим браузеру применить стили CSS, которые мы напишем внутри этого правила, к мобильным устройствам с размерами экрана от 360 пикселей
до 768 пикселей
.
В общих чертах, мы создаем макеты, которые будут реагировать от устройств небольшой ширины до средней ширины, например планшетов или мобильных устройств.
Вы можете взглянуть на некоторые точки останова мультимедиа, которые доступны в документации Bootstrap. Попробуйте поиграть с ними, установив диапазон размеров экрана, который вам больше нравится.
Вы видели, как создать простой медиа-запрос, который принимает несколько выражений размера экрана. И вы видели разницу между свойствами max-width
и min-width
и способы их применения.
В этом разделе мы рассмотрим, как создать простой макет, внешний вид которого изменяется при разных точках прерывания мультимедиа (размерах экрана). Мы начнем с создания разметки, которая будет содержать макет.
Пример медиа-запроса
Первое окно
Информация в первом поле
Вторая коробка
Информация во втором поле
В приведенном выше фрагменте будут отображаться два поля с соответствующей информацией при применении стилей.Вы можете просмотреть полный пример кода здесь, если хотите.
.container {
дисплей: гибкий;
flex-wrap: обертка;
ширина: 980 пикселей;
маржа: 0 авто;
маржа сверху: 40 пикселей;
}
@media only screen и (min-width: 320px) и (max-width: 576px) {
.container {
ширина: 100%;
отступ слева: 23px;
flex-direction: обратный столбец;
}
.boxes {
ширина: 100%;
}
}
Взглянув на файл CSS, вы заметите, что медиа-запрос имеет минимальную ширину 320 пикселей
и максимальную ширину 576 пикселей
.Это просто означает, что все стили, входящие в это правило, будут применимы только к устройствам с очень малой и малой шириной.
Расположение ящиков также изменяется в этом конкретном диапазоне ширины. Это связано с тем, что в селекторе .container
свойство flex-direction
изменено с row
на column-reverse
.
Вы можете поэкспериментировать с другими значениями, которые могут быть присвоены свойству flex-direction
.Посмотрите их здесь.
Заключение
Без установки диапазона ширины стили CSS из приведенного выше фрагмента будут применяться ко всем устройствам с минимальным размером экрана 576 пикселей
и выше.