
Media в CSS позволяют адаптировать стили под конкретные условия отображения, такие как размер экрана, ориентация устройства или тип устройства. Основной инструмент – директива @media, которая определяет блок правил, применяемых только при выполнении заданных условий.
На практике чаще всего используются media-запросы для изменения макета под мобильные устройства. Например, можно изменить ширину колонок, размер шрифтов или скрыть отдельные блоки на экранах меньше 768px, используя условие max-width: 767px. Это позволяет создавать интерфейсы, удобные для разных устройств без дублирования HTML.
Media-запросы поддерживают несколько типов устройств, включая screen для экранов и print для печати. Комбинируя условия через and, not или , можно точно настроить применение стилей. Например, условие screen and (min-width: 1024px) применяет стили только на экранах шире 1024 пикселей.
Использование media в CSS помогает управлять визуальной иерархией и расположением элементов, подстраивать размеры шрифтов и изображений, а также повышает удобство интерфейса без увеличения количества отдельных страниц. При этом важно учитывать порядок media-запросов, так как последние правила перекрывают предыдущие при совпадении условий.
Как работает @media и когда он применяется

Директива @media в CSS определяет набор стилей, которые применяются только при выполнении заданных условий. Она проверяет характеристики устройства или окна браузера и активирует соответствующие правила, игнорируя остальные.
Синтаксис @media включает тип устройства и одно или несколько условий, например:
@media screen and (max-width: 768px) {
body {
font-size: 14px;
}
}
Применение @media особенно актуально для адаптивного дизайна. На практике это позволяет:
- Изменять ширину и расположение блоков в зависимости от размера экрана.
- Корректировать размер и тип шрифтов для удобного чтения на мобильных устройствах.
- Скрывать или отображать элементы интерфейса для разных устройств.
- Настраивать стили под печать, чтобы страницы выглядели корректно на бумаге.
Основные моменты работы @media:
- Браузер последовательно проверяет все media-запросы и применяет те, условия которых соответствуют текущему устройству.
- Если несколько запросов подходят, приоритет получают правила, объявленные позже в коде.
- Условия могут комбинироваться через and, not и запятую, чтобы точно нацеливать стили.
Пример практического применения: изменение сетки с трех колонок на одну при ширине экрана меньше 600px:
@media screen and (max-width: 599px) {
.grid {
grid-template-columns: 1fr;
}
}
Это позволяет поддерживать читаемость и удобство навигации без дублирования HTML.
Типы media: screen, print, all и другие

CSS поддерживает несколько типов media, которые определяют устройства, к которым применяются стили. Основные типы:
- screen – стили применяются для экранов компьютеров, планшетов и смартфонов. Используется для адаптивного дизайна и изменения макета в зависимости от размеров окна.
- print – стили предназначены для печати. Позволяет скрывать элементы навигации, менять размеры шрифтов и адаптировать цветовую схему под бумагу.
- all – стили применяются ко всем устройствам, если не указаны более точные условия. Полезно для базовых правил, которые должны работать везде.
Помимо основных, есть специализированные типы:
- speech – стили для синтезаторов речи, например, изменение темпа чтения текста.
- projection – для проекторов, где важен контраст и крупные элементы интерфейса.
Рекомендации по использованию:
- Используйте screen для большинства адаптивных интерфейсов.
- Для печати создавайте отдельные блоки @media print с упрощённой версткой и скрытием декоративных элементов.
- Тип all комбинируйте с условиями max-width или min-width, чтобы не дублировать правила.
Использование media для изменения стилей под ширину экрана
Media-запросы позволяют менять стили в зависимости от ширины окна браузера. Основные свойства для контроля ширины – min-width и max-width. Они задают диапазоны, в которых применяются правила CSS.
Пример базового применения для мобильных устройств:
@media screen and (max-width: 767px) {
body {
font-size: 14px;
}
.sidebar {
display: none;
}
}
Рекомендации по использованию:
- Ставьте минимальные значения min-width для постепенного расширения интерфейса на большие экраны.
- Используйте max-width для сжатых макетов на смартфонах и маленьких планшетах.
- Комбинируйте min-width и max-width, чтобы задавать точные диапазоны для каждого типа устройства.
- Изменяйте не только размеры шрифтов, но и ширину колонок, отступы и видимость элементов.
Практическая структура media-запросов обычно строится от меньших экранов к большим, чтобы базовые стили оставались универсальными, а дополнительные правила расширяли или корректировали интерфейс без дублирования кода.
Настройка стилей для ориентации устройства
Media-запросы позволяют адаптировать стили в зависимости от ориентации экрана: portrait (вертикальная) и landscape (горизонтальная). Это особенно важно для планшетов и смартфонов, где расположение элементов интерфейса должно соответствовать ориентации.
Пример настройки для вертикальной ориентации:
@media screen and (orientation: portrait) {
.menu {
display: block;
width: 100%;
}
.content {
padding: 10px;
}
}
Пример для горизонтальной ориентации:
@media screen and (orientation: landscape) {
.menu {
display: flex;
width: auto;
}
.content {
padding: 20px 40px;
}
}
Рекомендации:
- Для портретной ориентации упрощайте навигацию и увеличивайте вертикальные отступы для удобства прокрутки.
- Для ландшафтной ориентации используйте горизонтальные сетки и расширенные колонки.
- Комбинируйте условия orientation с min-width или max-width для более точного таргетирования устройств.
- Проверяйте отображение на реальных устройствах, так как эмуляторы могут некорректно учитывать ориентацию.
Применение media для управления шрифтами и размерами текста
Пример настройки размера шрифта для мобильных устройств:
@media screen and (max-width: 767px) {
body {
font-size: 14px;
line-height: 1.5;
}
h1 {
font-size: 22px;
}
}
Для планшетов и десктопов:
@media screen and (min-width: 768px) {
body {
font-size: 16px;
line-height: 1.6;
}
h1 {
font-size: 28px;
}
}
Рекомендации:
- Используйте em или rem вместо пикселей, чтобы размеры текста масштабировались вместе с базовым шрифтом.
- Увеличивайте межстрочный интервал на маленьких экранах для улучшения читаемости.
- Применяйте отдельные media-запросы для заголовков и параграфов, чтобы сохранить пропорции шрифтов.
- Комбинируйте условия max-width и orientation, если необходимо различное отображение текста в портретной и ландшафтной ориентации.
Изменение расположения элементов с помощью media

Media-запросы позволяют изменять расположение блоков, колонок и элементов интерфейса в зависимости от ширины экрана или ориентации устройства. Это помогает адаптировать макет без изменения HTML-разметки.
Пример перестройки колонок на мобильных устройствах:
@media screen and (max-width: 767px) {
.grid {
display: flex;
flex-direction: column;
}
.sidebar {
order: 2;
}
.content {
order: 1;
}
}
Применение для горизонтальной ориентации:
@media screen and (orientation: landscape) {
.grid {
display: grid;
grid-template-columns: 2fr 1fr;
}
}
Рекомендации:
- Используйте flex-direction и order для изменения порядка элементов на маленьких экранах.
- Для более сложных макетов применяйте grid-template-columns с разными шаблонами колонок.
- Комбинируйте условия max-width и orientation, чтобы макет корректно реагировал на устройство и ориентацию.
- Проверяйте пересечение media-запросов, чтобы новые правила не перекрывали критически важные элементы.
Комбинирование условий media через and, or, not

Media-запросы позволяют объединять несколько условий с помощью ключевых слов and, , (аналог or) и not. Это даёт возможность более точно управлять применением стилей под разные устройства и размеры экранов.
Пример использования and:
@media screen and (min-width: 768px) and (max-width: 1024px) {
.container {
padding: 20px;
}
}
Пример с not:
@media not print {
.menu {
display: block;
}
}
Пример с or (через запятую):
@media screen and (max-width: 599px), screen and (orientation: portrait) {
body {
font-size: 14px;
}
}
Таблица основных комбинаций:
| Оператор | Описание | Пример |
|---|---|---|
| and | Все условия должны выполняться одновременно | @media screen and (min-width: 768px) and (max-width: 1024px) |
| , (or) | Применяется, если выполняется хотя бы одно из условий | @media (max-width: 599px), (orientation: portrait) |
| not | Применяет стили только при невыполнении условия | @media not print |
Рекомендации:
- Используйте and для точной фильтрации по диапазонам ширины и ориентации.
- Применяйте запятую для объединения альтернативных условий, чтобы уменьшить дублирование кода.
- Оператор not удобен для исключения определённых устройств, например, печати.
Ошибки и ограничения при использовании media
При работе с media-запросами часто возникают ошибки, связанные с приоритетом правил, синтаксисом и несовместимостью с некоторыми устройствами. Это может приводить к некорректному отображению элементов или игнорированию стилей.
Наиболее распространённые ошибки:
- Неправильный порядок media-запросов. Правила, объявленные позже, перекрывают предыдущие. Это важно учитывать при использовании min-width и max-width.
- Использование px для условий, когда лучше применять em или rem для масштабирования вместе с базовым шрифтом.
- Несовместимость старых браузеров с некоторыми типами media, например, speech или projection.
- Ошибки синтаксиса, такие как пропущенные скобки или лишние точки с запятой, из-за которых весь блок @media игнорируется.
- Перекрытие условий при использовании нескольких media-запросов для одного элемента без явного указания приоритетов.
Ограничения:
- Media-запросы не могут изменять содержимое HTML, только стили.
- Сложные условия могут замедлять рендеринг на слабых устройствах, если их слишком много.
- Некоторые устройства неправильно распознают ориентацию или ширину окна при динамическом изменении размера, что требует тестирования на реальных устройствах.
Рекомендации:
- Проверяйте порядок media-запросов от меньших к большим размерам или по важности правил.
- Тестируйте интерфейс на нескольких устройствах и браузерах, чтобы выявить несовместимости.
- Старайтесь минимизировать количество перекрывающихся условий и объединять правила при возможности.
Вопрос-ответ:
Что такое media-запросы в CSS и для чего они применяются?
Media-запросы в CSS — это инструкции, позволяющие применять стили в зависимости от характеристик устройства или окна браузера. С их помощью можно изменять размеры шрифтов, ширину колонок, расположение элементов, скрывать или отображать блоки на разных устройствах. Например, один и тот же сайт может иметь один макет на компьютере и другой на смартфоне без изменения HTML-разметки.
Какие типы media существуют и чем они отличаются?
Существует несколько типов media, которые определяют область применения стилей. Основные: screen — для экранов компьютеров, планшетов и смартфонов; print — для печати; all — для всех устройств. Дополнительные типы: speech для синтезаторов речи, projection для проекторов, tty и braille для текстовых и тактильных устройств. Выбор типа помогает точно настроить стили под конкретное устройство.
Как правильно использовать условия min-width и max-width?
Условия min-width и max-width позволяют задавать диапазоны ширины экрана, при которых применяются определённые стили. max-width обычно используют для адаптации интерфейса на маленьких экранах, уменьшая размеры блоков и шрифтов, а min-width — для более крупных экранов, расширяя макет и увеличивая элементы. Часто их комбинируют, чтобы задать точные границы применения.
Можно ли менять порядок элементов с помощью media-запросов?
Да, с помощью media-запросов можно управлять расположением элементов. В сочетании с CSS Flexbox или Grid можно менять направление колонок, порядок блоков и их видимость. Например, на мобильных устройствах можно расположить основное содержимое выше сайдбара, а на широких экранах вернуть колонки в стандартный порядок. Для этого используют свойства flex-direction, order и grid-template-columns.
Какие ошибки чаще всего встречаются при использовании media-запросов?
Частые ошибки: неправильный порядок media-запросов, из-за чего последние правила перекрывают предыдущие; использование фиксированных пикселей вместо em или rem, что мешает масштабированию текста; синтаксические ошибки, например, пропущенные скобки; перекрывающиеся условия, вызывающие непредсказуемое поведение макета; и недостаточное тестирование на разных устройствах, что приводит к неправильному отображению.
Как с помощью media-запросов изменять макет сайта для разных устройств?
Media-запросы позволяют применять разные стили в зависимости от характеристик устройства или ширины окна браузера. Например, можно задать три колонки для десктопа, а на экранах шириной меньше 768px перевести их в одну колонку, изменив свойство grid-template-columns или flex-direction. Также с их помощью можно скрывать отдельные блоки, изменять размеры шрифтов и межстрочные интервалы для улучшения читаемости, а также адаптировать элементы навигации под портретную или горизонтальную ориентацию устройства. Для точного управления часто комбинируют условия min-width, max-width и orientation, что позволяет точно подбирать стили под конкретные диапазоны экранов и ориентацию без изменения HTML.
