точки останова, типы устройств, стандартные разрешения и многое другое
В прошлом создание веб-сайта было более простой задачей. На сегодняшний день макет веб-сайта должен адаптироваться не только к компьютерам, но и к планшетам, мобильным устройствам и даже телевизорам.
Создание веб-сайта с адаптируемым макетом называется отзывчивым веб-дизайном, а медиа-запросы CSS — одни из важнейших его частей. В этой статье мы подробно рассмотрим медиа-запросы и способы их использования в CSS.
Что такое медиа-запрос?
Медиа-запрос — это функция CSS3, которая используется для адаптации макета веб-страницы к различным размерам экрана и типам устройств.
Синтаксис
@media media type and (condition: breakpoint) { // Правила CSS }
Мы можем ориентироваться на различные типы устройств в зависимости от условий. Правила внутри медиа-запроса применяются только при совпадении условий and/or в типах устройств.
Синтаксис может показаться сложным, поэтому давайте рассмотрим каждую его часть по отдельности.
Правило @Media
Начнем определение медиа-запросов с правила @media, а затем включим правила CSS в круглые скобки. Оно используется для указания типов целевых устройств:
@media () { // Правила CSS }
Скобка
Внутри скобки мы устанавливаем условие. Например, нам нужно увеличить размер шрифта для мобильных устройств. Для этого устанавливаем максимальную ширину, которая проверяет ширину устройства:
.text { font-size: 14px; } @media (max-width: 480px) { .text { font-size: 16px; } }
Обычно размер текста составляет 14 пикселей. Однако, поскольку мы применили медиа-запрос, он изменится до 16 пикселей при максимальной ширине устройства 480 пикселей и меньше.
Важно: медиа-запросы всегда должны находиться в конце CSS-файла.
Типы устройств
Типы устройств размещаются сразу после правила @media. Если тип не указан, правило @media выбирает все типы по умолчанию. Существует множество видов устройств, однако их можно разделить на 4 категории:
- all — для всех типов устройств;
- print — для принтеров;
- screen — для экранов компьютеров, планшетов и смартфонов;
- speech — для скринридеров, которые «читают» страницу вслух.
Например, чтобы выбрать только экраны, нужно установить ключевое слово screen сразу после правила @media. Правила также необходимо объединить ключевым словом «and»:
@media screen and (max-width: 480px) { .text { font-size: 16px; } }
Точки останова
Точка останова — это ключ, который определяет, когда следует изменить макет и адаптировать новые правила внутри медиа-запросов. Вернемся к нашему примеру:
@media (max-width: 480px) { .text { font-size: 16px; } }
Здесь точка останова составляет 480 пикселей. Теперь медиа-запрос знает, когда устанавливать или перезаписывать новый класс. Если ширина устройства меньше 480 пикселей, то будет применен класс text.
Распространенные точки останова: есть ли стандартное разрешение?
Какую точку останова следует использовать? Поскольку на рынке существует множество устройств, то невозможно определить фиксированные значения для каждого из них.
Следовательно мы не можем сказать, что существует стандартное разрешение для устройств, однако в повседневном программировании есть несколько часто используемых вариантов. Если вы используете фреймворки CSS (например, Bootstrap, Bulma и т. д.), вы также можете применять их точки останова.
Рассмотрим некоторые распространенные точки останова:
- 320px — 480px: мобильные устройства;
- 481px — 768px: планшеты;
- 769px — 1024px: маленькие экраны, ноутбуки;
- 1025px — 1200px: большие экраны;
- 1201px и больше — очень большие экраны, телевизоры.
Как уже было сказано выше, точки останова могут различаться и точно определенного стандарта нет, однако приведенные выше примеры используются чаще всего.
Заключение
Отзывчивость является обязательным параметром в современной области веб-дизайна и разработки, а медиа-запросы — одни из наиболее важных частей создания отзывчивых макетов. Я надеюсь, что эта статья помогла вам разобраться в том, как они работают.
Читайте также:
- Советы по анимации с CSS и JavaScript
- Как написать хороший HTML & CSS код с помощью Webflow
- Почему никто не рассказал мне это о CSS
Перевод статьи Cem Eygi: CSS Media Queries: Breakpoints, Media Types, Standard Resolutions, and More
Читайте также
Медиа-запросы CSS: основы работы | 8HOST.
COM 28 мая, 2022 12:07 пп 474 views | Комментариев нетDevelopment | Amber | Комментировать запись
Медиа-запросы – это очень мощный способ настройки стилей в соответствии с такими факторами, как тип используемого устройства, размер области просмотра, плотность пикселей на экране и даже ориентация устройства. Поскольку медиа-запросы существуют уже довольно давно, вы, вероятно, уже знакомы с их основным синтаксисом и использованием. Поэтому в данном мануале мы постараемся кратко и понятно объяснить основы их работы, а также покажем несколько трюков, о которых вы не знали.
Основные медиа-запросы
Медиа-запросы определяются с помощью правила @media, за которым указывается тип и функции медиа. Доступные типы медиа: all, print, screen и speech (если тип не указан, по умолчанию подразумевается all). Одновременно можно использовать несколько типов, в таком случае их разделяют запятыми:
@media screen, print { /* Styles for screen and print devices */ }
Примечание: Такие типы медиа, как tv или projection, устарели с выходом Media Queries level 4.
Что касается медиа-функций, они определяются в скобках. Вы можете протестировать широкий спектр функций. Некоторые из наиболее популярных — это width, height, aspect-ratio, orientation и resolution. Многие из этих популярных функций являются функциями диапазона, поэтому они также имеют минимальную и максимальную версии (то есть min-width, max-width, min-aspect-ratio, max-aspect-ratio и т.п.)
В следующем простом примере цвет фона по умолчанию — ярко-розовый, но экранные устройства с шириной области просмотра 650 пикселей или меньше вместо него будут отображать цвет rebeccapurple:
body { background: hotpink; } @media screen and (max-width: 650px) { body { background: rebeccapurple; } }
Обратите внимание, при указании типа и функции медиа между ними нужно использовать логический оператор and.
Вот еще несколько примеров простых медиа-запросов, которые указывают либо тип медиа, либо медиа-функцию, либо и то, и другое:
@media print { /* styles for print media only */ } @media (max-width: 65rem) { /* styles for any device that has a display width of 65rem or less */ } @media screen and (min-width: 800px) { /* styles for screen viewports that have a width of 800px or more */ }
Несколько медиа-функций
Вы можете указать несколько медиа-функций, если того требует ваш запрос. Для этого между функциями используется логический оператор and. При использовании and запрос будет выполнен только в том случае, если все функции оцениваются как истинные. Например, очень часто макеты настраиваются на несколько разных диапазонов ширины области просмотра:
/* Extra-small */ @media screen and (max-width: 360px) { /* ... */ } /* Small */ @media screen and (min-width: 361px) and (max-width: 480px) { /* ... */ } /* Medium-only */ @media screen and (min-width: 481px) and (max-width: 960px) { /* ... */ } /* ... */
Логический оператор or и запятые
Также можно определить несколько запросов и разделить их запятыми. В этом случае запятые действуют как логические операторы or, и запрос становится по сути списком запросов. Медиа-запрос будет применяться, если какой-либо из перечисленных запросов отвечает шаблону.
В следующем примере медиа-запрос будет истинным, если устройство имеет портретную ориентацию или если окно просмотра устройства имеет минимальную ширину 3rem и максимальное соотношение сторон 2/1:
@media (orientation: portrait), (min-width: 3rem) and (max-aspect-ratio: 2/1) { /* . .. */ }
Логический оператор not
Вы можете использовать логический оператор not в начале запроса, чтобы изменить истинность всего запроса. Оператор not полезен для применения стилей, когда определенные условия не выполняются браузером или устройством. В следующем примере медиа-запрос будет применяться, когда основное указывающее устройство не может наводить курсор на элементы:
@media not screen and (hover: hover) { /* ... */ }
Примечание: Тип медиа нужно указывать обязательно. Кроме того, not меняет не весь список запросов (запросы, разделенные запятыми), а только один запрос.
Логический оператор only
Логический оператор only особенный – он скрывает весь запрос для старых браузеров. Другими словами, старые браузеры не понимают ключевое слово only, поэтому игнорируют весь медиа-запрос. Иначе ключевое слово only не действует.
@media only all and (min-width: 320px) and (max-width: 480px) { /* ignored by older browsers */ }
Примечание: Как и в случае с оператором not, при использовании only тип носителя является обязательным. Обратите внимание, что устаревшие браузеры, которые не поддерживают Media Queries level 3, сейчас встречаются редко, поэтому в большинстве случаев only можно не использовать.
Дополнения из Media Queries Level 4
В последнем выпуске спецификации Media Queries Level 4 появилось довольно много новых медиа-функций, которые можно протестировать:
- pointer: определяет, есть ли у вас первичное указывающее устройство (none, coarse и fine).
- any-pointer: определяет, доступно ли какое-либо указывающее устройство (none, coarse и fine).
- hover: определяет, может ли основное указывающее устройство наводить курсор на элементы (none или hover).
- any-hover: определяет, может ли любое из доступных указывающих устройств наводиться на элементы (none или hover).
- color-gamut: диапазон доступных цветов (srgb, p3 или rec2020).
- overflow-inline: способ обработки потенциального переполнения на внутренней оси (none, paged, optional-paged или scroll).
- overflow-block: способ обработки потенциального переполнения на оси блока (none, paged, optional-paged или scroll).
- update: частота, с которой может обновляться макет (none, slow или fast).
Медиа-запросы для дисплеев Retina
За последние несколько лет наблюдается распространение устройств с дисплеями с более высокой плотностью пикселей. Определенные аспекты дизайна для устройств с более высокой плотностью пикселей можно определять иначе. К примеру, можно использовать определенную графику с высоким разрешением.
Чтобы добиться этого, используют медиа-функцию с минимальным разрешением со значением 192 dpi. Однако функция resolution поддерживается не всеми браузерами, и для более надежного подхода можно также добавить дополнительную нестандартную функцию -webkit-min-device-pixel-ratio со значением 2:
@media screen and (min-resolution: 192dpi), (-webkit-min-device-pixel-ratio: 2) { /* ... */ }
Проверить поддержку медиа-функции в браузерах можно на Can I Use.
Ниже вы найдете несколько очень полезных ресурсов, связанных с медиа-запросами:
- Медиа-запросы CSS-Tricks для стандартных устройств
- MQTest.io позволяет проверить, на какие мультимедийные функции реагирует ваше устройство.
- Страничка MDN по доступным медиа-функциям.
Читайте также: CSS-свойство will-change: как использовать
Tags: CSS@media — CSS: Каскадные таблицы стилей
Правило at @media
CSS может использоваться для применения части таблицы стилей на основе результата одного или нескольких медиазапросов. С его помощью вы указываете медиа-запрос и блок CSS для применения к документу тогда и только тогда, когда медиа-запрос соответствует устройству, на котором используется контент.
Примечание: В JavaScript к правилам, созданным с использованием @media
, можно получить доступ с помощью CSSMediaRule
Интерфейс объектной модели CSS.
At-правило @media
может быть размещено на верхнем уровне вашего кода или вложено в любое другое at-правило условной группы.
/* На верхнем уровне вашего кода */ Экран @media и (минимальная ширина: 900 пикселей) { статья { набивка: 1рем 3рем; } } /* Вложено в другое условное at-правило */ @supports (отображение: гибкий) { Экран @media и (минимальная ширина: 900 пикселей) { статья { дисплей: гибкий; } } }
Обсуждение синтаксиса медиазапросов см. в разделе Использование медиазапросов.
Типы носителей
Типы носителей описывают общую категорию устройства.
За исключением случаев использования логических операторов не
или только
, тип носителя является необязательным и подразумевается тип все
.
-
все
Подходит для всех устройств.
-
печать
Предназначен для постраничного материала и документов, просматриваемых на экране в режиме предварительного просмотра. (Информацию о проблемах форматирования, характерных для этих форматов, см. в постраничных носителях.)
-
экран
Предназначен в первую очередь для экранов.
Примечание: CSS2.1 и Media Queries 3 определили несколько дополнительных типов мультимедиа ( tty
, tv
, проекция
, карманный компьютер
, шрифт Брайля
, рельефный
, ауральный
), но они устарели в Media Queries 4 и не должны использоваться.
Функции мультимедиа
Функции мультимедиа описывают конкретные характеристики пользовательского агента, устройства вывода или среды. Выражения функций мультимедиа проверяют их наличие или значение и являются совершенно необязательными. Каждое выражение функции мультимедиа должно быть заключено в круглые скобки.
-
любое наведение
Позволяет ли какой-либо доступный механизм ввода пользователю наводить курсор на элементы? Добавлено в Media Queries Level 4.
-
любой указатель
Является ли какой-либо доступный механизм ввода указательным устройством, и если да, то насколько он точен? Добавлено в Media Queries Level 4.
-
соотношение сторон
Соотношение ширины и высоты области просмотра
-
цвет
Количество битов на компонент цвета устройства вывода или ноль, если устройство не является цветным
-
цветовая гамма
Приблизительный диапазон цветов, поддерживаемых пользовательским агентом и устройством вывода. Добавлено в Media Queries Level 4.
-
индекс цвета
Количество записей в таблице поиска цветов устройства вывода или ноль, если устройство не использует такую таблицу
-
соотношение сторон устройства
Not for use in new websites.»> Устаревший Отношение ширины к высоте выходного устройства. Устарело в медиа-запросах уровня 4.
-
высота устройства
Устаревший Высота поверхности рендеринга устройства вывода. Устарело в медиа-запросах уровня 4.
-
ширина устройства
Устаревший Ширина поверхности рендеринга устройства вывода. Устарело в медиа-запросах уровня 4.
-
режим отображения
Режим отображения приложения, указанный в 9 манифесте веб-приложения.0004 отображать элемент . Определено в спецификации манифеста веб-приложения.
-
динамический диапазон
Комбинация яркости, контрастности и глубины цвета, поддерживаемая пользовательским агентом и устройством вывода. Добавлено в Media Queries Level 5.
-
форсированные цвета
Определите, ограничивает ли пользовательский агент цветовую палитру. Добавлено в Media Queries Level 5.
-
сетка
Использует ли устройство сетку или растровый экран?
-
высота
Высота области просмотра.
-
наведение
Позволяет ли первичный механизм ввода пользователю наводить курсор на элементы? Добавлено в Media Queries Level 4.
-
инвертированные цвета
Пользовательский агент или базовая ОС инвертируют цвета? Добавлено в Media Queries Level 5.
-
монохромный
бит на пиксель в буфере монохромных кадров выходного устройства или ноль, если устройство не монохромное.
-
ориентация
Ориентация окна просмотра.
-
блок перелива
Как устройство вывода обрабатывает контент, который выходит за пределы области просмотра вдоль оси блока? Добавлено в Media Queries Level 4.
-
встроенный перелив
Можно ли прокручивать содержимое, выходящее за пределы области просмотра вдоль встроенной оси? Добавлено в Media Queries Level 4.
-
указатель
Является ли первичный механизм ввода указательным устройством, и если да, то насколько оно точное? Добавлено в Media Queries Level 4.
-
предпочитает цветовую схему
Определите, предпочитает ли пользователь светлую или темную цветовую схему. Добавлено в Media Queries Level 5.
-
предпочитает контраст
Определяет, запросил ли пользователь у системы увеличение или уменьшение контраста между соседними цветами. Добавлено в Media Queries Level 5.
-
предпочитает уменьшенное движение
Пользователь предпочитает меньше движений на странице. Добавлено в Media Queries Level 5.
-
разрешение
Плотность пикселей устройства вывода.
-
сценарии
Экспериментальный Определяет, доступны ли сценарии (например, JavaScript). Добавлено в Media Queries Level 5.
-
обновление
Как часто устройство вывода может изменять внешний вид содержимого. Добавлено в Media Queries Level 4.
-
видео-динамический диапазон
Комбинация яркости, контрастности и глубины цвета, которые поддерживаются видеоплоскостью агента пользователя и устройства вывода. Добавлено в Media Queries Level 5.
-
ширина
Ширина области просмотра, включая ширину полосы прокрутки.
Логические операторы
Логические операторы не
, и
, только
и или
могут использоваться для составления сложного медиа-запроса.
Вы также можете объединить несколько медиазапросов в одно правило, разделив их запятыми.
-
и
Используется для объединения нескольких медиа-функций вместе в один медиа-запрос, требующий, чтобы каждая цепочка функций возвращала
true
, чтобы запрос былtrue
. Он также используется для объединения функций мультимедиа с типами мультимедиа.-
не
Используется для отрицания медиа-запроса, возвращая
true
, если в противном случае запрос вернул быfalse
. Если он присутствует в списке запросов, разделенных запятыми, он будет отрицать только конкретный запрос, к которому он применяется. Если вы используете оператор, а не
, вы должны также указать тип носителя.Примечание: На уровне 3 ключевое слово
, а не
не может использоваться для отрицания отдельного выражения функции мультимедиа, а только для всего запроса мультимедиа.-
только
Применяет стиль, только если совпадает весь запрос. Это полезно для предотвращения применения выбранных стилей старыми браузерами. Когда не используется
только
, старые браузеры будут интерпретировать запросscreen и (max-width: 500px)
какscreen
, игнорируя остальную часть запроса и применяя его стили на всех экранах. Если вы используететолько оператор
, вы должны также указать тип носителя.-
,
(запятая) Запятые используются для объединения нескольких медиазапросов в одно правило. Каждый запрос в списке, разделенном запятыми, обрабатывается отдельно от других. Таким образом, если любой из запросов в списке равен
true
, весь оператор мультимедиа возвращаетtrue
. Другими словами, списки ведут себя как логические операторыили
.-
или
Эквивалент оператора
,
. Добавлено в Media Queries Level 4.
Чтобы наилучшим образом удовлетворить людей, которые настраивают размер текста на сайте, используйте em
s, когда вам нужно
для медиа-запросов.
Оба em
и px
являются допустимыми единицами, но em
работает лучше, если пользователь меняет размер текста в браузере.
Также рассмотрите возможность использования мультимедийных запросов уровня 4, чтобы улучшить взаимодействие с пользователем. Например, предпочитает уменьшенное движение
, чтобы определить, запросил ли пользователь, чтобы система минимизировала количество используемой анимации или движения.
Поскольку медиа-запросы позволяют получить представление о возможностях — и, в более широком смысле, функциях и дизайне — устройства, с которым работает пользователь, существует вероятность того, что они могут быть использованы для создания «отпечатка пальца», который идентифицирует устройство, или по крайней мере, классифицирует его с некоторой степенью детализации, которая может быть нежелательной для пользователей.
Из-за этой возможности браузер может каким-то образом подделать возвращаемые значения, чтобы предотвратить их использование для точной идентификации компьютера. Браузер также может предлагать дополнительные меры в этой области; например, если в Firefox включен параметр «Защита от отпечатков пальцев», многие мультимедийные запросы сообщают значения по умолчанию, а не значения, представляющие фактическое состояние устройства.
@media =
@media{ }
Тестирование типов носителей для печати и экрана
@медиа печать { тело { размер шрифта: 10pt; } } @медиаэкран { тело { размер шрифта: 13px; } } @медиаэкран, распечатать { тело { высота строки: 1,2; } } Только экран @media и (минимальная ширина: 320 пикселей) и (максимальная ширина: 480 пикселей) и (разрешение: 150 точек на дюйм) { тело { высота строки: 1,4; } }
В Media Queries Level 4 представлен новый синтаксис диапазона, который позволяет использовать менее подробные медиа-запросы при тестировании любой функции, принимающей диапазон, как показано в следующих примерах:
@медиа (высота > 600 пикселей) { тело { высота строки: 1,4; } } @media (400 пикселей <= ширина <= 700 пикселей) { тело { высота строки: 1,4; } }
Дополнительные примеры см. в разделе Использование медиа-запросов.
Спецификация |
---|
Media Queries Level 4 # media-descriptor-table |
Только таблицы BCD загрузить в браузере с включенным JavaScript. Включите JavaScript для просмотра данных.
- Использование мультимедийных запросов
- В JavaScript к
@media
можно получить доступ через интерфейс объектной модели CSSCSSMediaRule
. - Расширенные функции мультимедиа Mozilla
- Расширенные мультимедийные функции WebKit
Обнаружили проблему с содержанием этой страницы?
- Отредактируйте страницу на GitHub.
- Сообщить о проблеме с содержимым.
- Просмотрите исходный код на GitHub.
Последний раз эта страница была изменена участниками MDN.
Учебное пособие по адаптивному дизайну: примеры мультимедийных запросов и многое другое
В настоящее время ваш веб-сайт посещают самые разные устройства: настольные компьютеры с большими мониторами, ноутбуки среднего размера, планшеты, смартфоны и многое другое.
Чтобы обеспечить оптимальное взаимодействие с пользователем в качестве разработчика внешнего интерфейса, ваш сайт должен настроить свой макет в соответствии с этими различными устройствами (т. е. с их различными разрешениями экрана и размерами, контролируемыми медиа-запросами в CSS. Процесс , отвечающий на форму устройства пользователя, называется (как вы уже догадались) отзывчивым веб-дизайном (RWD).
Почему стоит потратить время на изучение примеров медиа-запросов адаптивного веб-дизайна и переключить свое внимание на RWD? Некоторые веб-дизайнеры, например, вместо этого делают делом своей жизни обеспечение стабильной работы пользователей во всех браузерах, часто тратя дни напролет на решение мелких проблем с Internet Explorer.
Это глупый подход.
Некоторые веб-дизайнеры целыми днями решают мелкие проблемы с Internet Explorer и оставляют своих мобильных пользователей в качестве второстепенных посетителей. Это глупый подход.
Mashable назвал 2013 год годом адаптивного веб-дизайна. Почему? Более 30% их трафика приходится на мобильные устройства. Они прогнозируют, что к концу года это число может достичь 50%. В целом в Интернете 17,4% веб-трафика приходилось на смартфоны в 2013 году. В то же время на использование Internet Explorer, например, приходится лишь 12% всех браузер трафика, что примерно на 4% меньше, чем в прошлом году (по данным W3Schools). Если вы оптимизируете для конкретного браузера, а не для глобальной популяции смартфонов, вы упускаете из виду лес за деревьями. И в некоторых случаях это может означать разницу между успехом и неудачей — адаптивный дизайн влияет на показатели конверсии, SEO, показатели отказов и многое другое.
О RWD обычно умалчивают, так это о том, что речь идет не только о настройке внешнего вида ваших веб-страниц; вместо этого следует сосредоточиться на логической адаптации вашего сайта для использования на разных устройствах. Например: использование мыши не обеспечивает такой же пользовательский опыт, как, скажем, сенсорный экран. Вы не согласны? Ваши адаптивные макеты для мобильных устройств и настольных компьютеров должны отражать эти различия, определенные в медиа-запросах сайта для настольных компьютеров, планшетов или мобильных устройств.
В то же время вы не хотите полностью переписывать свой сайт для каждого из десятков различных размеров экрана, на которых он может просматриваться — такой подход просто неосуществим. Вместо этого решение состоит в том, чтобы реализовать гибкие элементы адаптивного дизайна, которые используют один и тот же HTML-код для адаптации к размеру экрана пользователя.
С технической точки зрения решение кроется в этом руководстве по адаптивному дизайну: использование медиа-запросов CSS, псевдоэлементов, гибких наборов макетов сетки и других инструментов для динамической настройки на заданное разрешение.
Медиа-запросы адаптивного дизайна: примеры
Типы мультимедиа впервые появились в HTML4 и CSS2.1, что позволило размещать отдельные CSS для экрана и печати. Таким образом, можно было установить отдельные стили для отображения страницы на компьютере по сравнению с ее распечаткой.
или
@экран мультимедиа { * { фон: серебро } }
В CSS3 вы можете определять стили в зависимости от ширины страницы. Поскольку ширина страницы коррелирует с размером устройства пользователя, эта возможность позволяет вам определять разные макеты для разных устройств. Примечание. Медиа-запросы поддерживаются всеми основными браузерами.
Это определение возможно через настройку основных свойств: max-width
, device-width
, ориентация
и цвет
. Возможны и другие определения; но в этом случае наиболее важными вещами, на которые следует обратить внимание, являются минимальное разрешение (ширина) и настройки ориентации (пейзаж или портрет).
В приведенном ниже примере адаптивного CSS показана процедура инициализации определенного файла CSS с учетом ширины страницы. Например, если 480 пикселей — максимальное разрешение экрана текущего устройства, то будут применены стили, определенные в main_1.css.
Мы также можем определить разные стили в одной и той же таблице стилей CSS, чтобы они использовались только в том случае, если выполняются определенные ограничения. Например, эта часть нашего отзывчивого CSS будет использоваться только в том случае, если ширина текущего устройства превышает 480 пикселей:
Экран @media и (минимальная ширина: 480 пикселей) { дел { плыть налево; фон: красный; } ....... }
«Умное масштабирование»
Мобильные браузеры используют так называемое «умное масштабирование», чтобы предоставить пользователям «превосходные» возможности чтения. По сути, интеллектуальное масштабирование используется для пропорционального уменьшения размера страницы. Это может проявляться двумя способами: (1) масштабирование по инициативе пользователя (например, двойное касание экрана iPhone для увеличения текущего веб-сайта) и (2) первоначальное отображение увеличенной версии веб-страницы на нагрузка.
Учитывая, что мы можем просто использовать адаптивные медиа-запросы для решения любых проблем, на которые может быть направлено интеллектуальное масштабирование, часто желательно (или даже необходимо) отключить масштабирование и убедиться, что содержимое вашей страницы всегда заполняет браузер:
< meta name="viewport" content="width=device-width, initial-scale=1" />
Установив для initial-scale
значение 1, мы управляем начальным уровнем масштабирования страницы (то есть величиной масштабирования при загрузке страницы). Если вы спроектировали веб-страницу так, чтобы она была адаптивной, то ваш гибкий, динамичный макет должен разумно заполнять экран смартфона, не требуя начального масштабирования.
Кроме того, мы можем полностью отключить масштабирование с помощью user-scalable=false
.
Ширина страницы
Допустим, вы хотите предоставить три различных адаптивных макета страницы: один для настольных компьютеров, один для планшетов (или ноутбуков) и один для смартфонов. Какие размеры страницы следует использовать в качестве предельных значений (например, 480 пикселей)?
К сожалению, не существует определенного стандарта для целевой ширины страницы, но часто используются следующие примерные адаптивные значения:
- 320px
- 480px
- 600px
- 768px
- 900px
- 1024px
- 1200px
Однако существует несколько различных определений ширины. Например, 320 и выше имеют пять приращений CSS3 Media Query по умолчанию: 480, 600, 768, 992 и 1382 пикселей. Наряду с данным примером в этом руководстве по адаптивной веб-разработке я мог бы перечислить по крайней мере десять других подходов.
С любым из этих разумных наборов приращений вы можете ориентироваться на большинство устройств. На практике обычно нет необходимости отдельно обрабатывать все вышеупомянутые примеры медиа-запросов ширины страницы — семь разных разрешений, вероятно, будут излишними. По моему опыту, чаще всего используются 320 пикселей, 768 пикселей и 1200 пикселей; этих трех значений должно быть достаточно для таргетинга на смартфоны, планшеты/ноутбуки и настольные компьютеры соответственно.
Псевдоэлементы
Опираясь на адаптивные медиа-запросы из предыдущего примера, вы также можете программно показать или скрыть определенную информацию в зависимости от размера устройства пользователя. К счастью, это тоже можно сделать с помощью чистого CSS, как описано в руководстве ниже.
Во-первых, скрытие некоторых элементов ( display: none;
) может быть отличным решением, когда речь идет об уменьшении количества экранных элементов для макета смартфона, где почти всегда не хватает места.
Но помимо этого, вы также можете проявить творческий подход с псевдоэлементами CSS (селекторами), например, :before
и :after
. Примечание: повторюсь, псевдоэлементы поддерживаются всеми основными браузерами.
Псевдоэлементы используются для применения определенных стилей к определенным частям элемента HTML или для выбора определенного подмножества элементов. Например, псевдоэлемент :first-line
позволяет вам определять стили исключительно в первой строке определенного селектора (например, p:first-line
будет применяться к первой строке всех p
s). Точно так же псевдоэлемент a:visited
позволит вам определить стили для всех a
со ссылками, ранее посещенными пользователем. Ясно, что они могут пригодиться.
Вот простой пример адаптивного дизайна, в котором мы создаем три разных макета для кнопки входа, по одному для настольного компьютера, планшета и смартфона. На смартфоне у нас будет одинокая иконка, а на планшете будет такая же иконка с «Именем пользователя». Наконец, для рабочего стола мы также добавим короткое обучающее сообщение («Вставьте свое имя пользователя»).
.имя пользователя: после { content:"Введите ваше имя пользователя"; } Экран @media и (максимальная ширина: 1024 пикселей) { .имя пользователя: до { содержимое:"Имя пользователя"; } } Экран @media и (максимальная ширина: 480 пикселей) { .имя пользователя: до { содержание:""; } }
Используя только псевдоэлементы :before
и :after
, мы получаем следующее:
Чтобы узнать больше о магии псевдоэлементов, Крис Койер написал хорошую статью CSS-Tricks.
Итак, с чего начать?
В этом уроке мы установили некоторые строительные блоки адаптивного веб-дизайна (например, медиа-запросы и псевдоэлементы) и представили несколько примеров каждого из них. Куда мы идем отсюда?
Первый шаг, который вы должны сделать, это организовать все элементы вашей веб-страницы в соответствии с размерами экрана.
Взгляните на настольную версию раскладки, представленную выше. В этом случае содержимое слева (зеленый прямоугольник) может служить своего рода главным меню. Но когда используются устройства с более низким разрешением (например, планшет или смартфон), может иметь смысл отображать это главное меню на полную ширину. С помощью медиа-запросов вы можете реализовать это поведение следующим образом:
Экран @media и (макс. ширина: 1200 пикселей) { .меню { ширина: 100%; } } Экран @media и (минимальная ширина: 1200 пикселей) { .меню { ширина: 30%; } }
К сожалению, этот базовый подход часто оказывается недостаточным, так как ваш внешний интерфейс усложняется. Поскольку организация контента сайта часто значительно различается между версиями, предназначенными для разных устройств, взаимодействие с пользователем в конечном итоге зависит от использования не только адаптивного CSS для настольных и мобильных устройств, но также HTML и JavaScript.
При определении адаптивных макетов для различных устройств важны несколько ключевых элементов. В отличие от настольных версий, где у нас достаточно места для контента, разработка для смартфонов более требовательна. Более чем когда-либо необходимо группировать конкретное содержимое и иерархически определять важность отдельных частей.
Для смартфона как никогда важно группировать конкретное содержимое и иерархически определять важность отдельных частей.
Различные способы использования вашего контента также важны. Например, когда у вашего пользователя есть мышь, он может установить курсор над определенными элементами, чтобы получить больше информации, поэтому вы (как веб-разработчик) можете оставить некоторую информацию для сбора таким образом, но это не будет случай, когда ваш пользователь находится на смартфоне.
Кроме того, если вы оставите на своем сайте кнопки, которые затем отображаются на смартфонах размером меньше обычного пальца, вы создадите неопределенность в использовании и ощущении вашего сайта. Обратите внимание, что на изображении выше стандартное веб-представление (слева) делает некоторые элементы совершенно непригодными для использования на меньшем устройстве.
Такое поведение также увеличивает вероятность того, что ваш пользователь совершит ошибку, что замедлит его работу. На практике это может проявляться в снижении количества просмотров страниц, снижении продаж и общей вовлеченности.
При использовании медиа-запросов следует учитывать поведение всех элементов страницы, а не только тех, на которые нацелены, особенно при использовании гибких сеток, в этом случае (в отличие от фиксированных размеров) страница будет полностью заполнена в в любой момент, пропорционально увеличивая и уменьшая размер содержимого. Поскольку ширина задается в процентах, графические элементы (например, изображения) могут искажаться и искажаться при таком гибком макете. Для изображений одно решение выглядит следующим образом:
изображение { максимальная ширина: 100% }
С другими элементами следует обращаться аналогичным образом. Например, отличным решением для иконок в RWD является использование IconFonts.
Несколько слов о системах Fluid Grid
Когда мы обсуждаем процесс полной адаптации дизайна, мы часто рассматриваем оптимальное качество просмотра (с точки зрения пользователя). Такое обсуждение должно включать максимально упрощенное использование, важность элементов (на основе видимых областей страницы), упрощенное чтение и интуитивно понятную навигацию. Среди этих категорий одним из самых важных компонентов является настройка ширины контента . Например, в так называемых системах гибкой сетки есть набор элементов, т. е. элементы, основанные на относительной ширине в процентах от общей страницы. Таким образом, все элементы адаптивной системы веб-дизайна автоматически подстраиваются под размер страницы.
Хотя эти системы с плавной сеткой тесно связаны с тем, что мы здесь обсуждали, на самом деле они представляют собой целую отдельную сущность, для подробного обсуждения которой потребуется дополнительное руководство.