
Медиа запросы CSS позволяют изменять стиль элементов в зависимости от характеристик устройства. Основной синтаксис использует @media с условиями, такими как min-width, max-width, orientation и resolution. Например, @media (max-width: 768px) применяется к экранам планшетов и мобильных устройств, корректируя ширину контейнеров и размер шрифтов.
Для эффективного адаптивного дизайна рекомендуется использовать mobile-first подход: сначала прописывать базовые стили для маленьких экранов, а затем добавлять медиа запросы для устройств с большей шириной. Это уменьшает нагрузку на браузер и повышает читаемость CSS. Минимальные точки перелома обычно задаются на 480px, 768px и 1024px, но их выбор должен основываться на анализе статистики посещаемости сайта.
Важно комбинировать условия в медиа запросах, например, @media (min-width: 768px) and (max-width: 1024px), чтобы точно контролировать поведение блоков на разных устройствах. Для изображений и фоновых элементов полезно применять resolution или device-pixel-ratio, чтобы обеспечить оптимальное качество на дисплеях с высокой плотностью пикселей.
При работе с медиа запросами стоит структурировать CSS так, чтобы каждый блок имел отдельные правила для разных экранов, избегая дублирования кода. Инструменты инспекции браузеров позволяют проверять работу медиа запросов в реальном времени и корректировать их без необходимости постоянно изменять физические устройства.
Определение точек перелома для разных устройств

Точки перелома (breakpoints) задаются на основе ширины экрана, при которой дизайн должен адаптироваться. Наиболее распространенные диапазоны ширины экрана:
| Устройство | Минимальная ширина (px) | Максимальная ширина (px) |
|---|---|---|
| Смартфоны (портрет) | 320 | 480 |
| Смартфоны (ландшафт) | 481 | 767 |
| Планшеты (портрет) | 768 | 1024 |
| Планшеты (ландшафт) | 1025 | 1200 |
| Десктопы и ноутбуки | 1201 | 1920 |
| Большие экраны | 1921 | 2560 |
При выборе точек перелома рекомендуется учитывать фактическую ширину контента, а не только устройство. Например, если основной блок сайта удобен при 960px, стоит создать медиа-запрос на 960px, даже если это не стандартный размер устройства.
Использование нескольких точек перелома повышает гибкость дизайна. Оптимальная стратегия: задавать 3–5 ключевых точек для наиболее часто используемых разрешений, а для промежуточных – применять относительные единицы (%, em, rem) вместо фиксированных значений.
Пример медиа-запроса для планшетов в портретной ориентации:
@media (min-width: 768px) and (max-width: 1024px) {
.container {
width: 90%;
padding: 20px;
}
}
Важно тестировать дизайн на реальных устройствах и использовать инструменты разработчика для эмуляции различных экранов. Это позволяет выявить, где нужно корректировать точки перелома, чтобы элементы не сжимались или не смещались.
Использование синтаксиса @media для экранов и разрешений

Синтаксис @media позволяет задавать условия применения CSS в зависимости от типа устройства и характеристик экрана. Основной формат: @media [тип_устройства] (условие) { стили }. Типы устройств: all, screen, print, speech. Для адаптивного дизайна чаще используют screen.
Условия проверяют характеристики экрана: width, height, aspect-ratio, resolution. Примеры: (max-width: 768px) применяет стили для экранов до 768 пикселей, (min-resolution: 2dppx) – для экранов с высокой плотностью пикселей.
Можно комбинировать несколько условий с помощью and, not и , (логическое ИЛИ). Пример: @media screen and (min-width: 1024px) and (max-width: 1366px) { ... } применяет стили только на экранах в диапазоне от 1024 до 1366 пикселей.
Для Retina-дисплеев используют разрешение в dpi или dppx: @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { ... }. Это позволяет подключать изображения и элементы с повышенной детализацией.
Соблюдение порядка медиа-запросов критично: сначала пишут стили для мобильных устройств (min-width), затем для больших экранов (max-width), чтобы избежать перекрытия правил и сохранить предсказуемость отображения.
Совмещение orientation позволяет контролировать портретную и ландшафтную ориентацию: @media screen and (orientation: portrait) { ... } для портретного режима и landscape для горизонтального.
Для точного контроля над устройствами полезно указывать hover и pointer: @media (hover: hover) and (pointer: fine) применяет стили только для устройств с мышью и точным указателем.
Практика показывает, что создание сетки адаптивного дизайна через @media на конкретные брейкпоинты экрана (например, 320px, 480px, 768px, 1024px, 1440px) обеспечивает стабильное отображение на большинстве устройств без избыточных условий.
Настройка стилей под мобильные телефоны и планшеты

Для корректного отображения на мобильных устройствах чаще всего используют диапазон ширины экрана до 768px. Минимальная настройка включает адаптацию шрифтов, отступов и размеров блоков с помощью медиазапросов. Пример: @media (max-width: 768px) { ... }.
Для телефонов с экранами до 480px оптимально уменьшать размеры заголовков на 15–20%, текстовых блоков – на 10–15%, а поля и отступы – на 20–30%. Важно сохранять достаточный размер интерактивных элементов: кнопки не менее 40x40px.
Для планшетов с шириной экрана 481–768px рекомендуется уменьшать ширину контейнеров до 90–95% от ширины экрана, сохранять читаемый размер шрифта и обеспечивать правильное выравнивание колонок при переходе с десктопной версии.
При работе с изображениями стоит использовать относительные единицы: max-width: 100% и height: auto, чтобы картинки автоматически масштабировались под ширину экрана, не искажая пропорции.
Особое внимание уделяется навигации: скрытие сложных меню на мобильных устройствах с заменой на «гамбургер»-иконку или упрощённое вертикальное меню улучшает юзабилити. Медиазапросы позволяют переключать стиль меню только для нужных диапазонов ширины.
Для точной настройки рекомендуется использовать несколько точек перелома: 320px, 480px, 640px, 768px. Это обеспечивает оптимальное отображение контента на большинстве телефонов и планшетов, минимизируя горизонтальную прокрутку и переполнение элементов.
Тестирование необходимо проводить на реальных устройствах и эмуляторах, чтобы проверить шрифты, отступы и адаптивность изображений. Корректная настройка медиазапросов предотвращает наложение элементов и нарушенные сетки при изменении ориентации экрана.
Адаптация сеток и контейнеров с помощью медиа запросов

Медиа запросы позволяют изменять структуру сеток и размеры контейнеров в зависимости от ширины экрана. Это особенно важно для поддержания читаемости и корректного отображения контента на устройствах с разной шириной.
Основные подходы к адаптации сеток:
- Использование CSS Grid: задавать количество колонок через
grid-template-columnsи менять его в медиа запросах. - Flexbox: переключение между строковой и колонной компоновкой с помощью
flex-direction. - Изменение отступов и ширины контейнера через свойства
padding,marginиmax-width.
Пример настройки сетки под разные устройства:
.container {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
@media (max-width: 1024px) {
.container {
grid-template-columns: repeat(2, 1fr);
gap: 12px;
}
}
@media (max-width: 600px) {
.container {
grid-template-columns: 1fr;
gap: 8px;
}
}
Для контейнеров с фиксированной шириной:
- Использовать
max-widthдля ограничения ширины на больших экранах. - Добавлять
paddingвнутри контейнера, чтобы контент не прилипал к краям на мобильных устройствах. - В медиа запросах уменьшать ширину и внутренние отступы постепенно, чтобы сохранить пропорции.
Рекомендации при работе с адаптивными сетками:
- Определять ключевые точки перелома (
breakpoints) исходя из реальных устройств, например: 320px, 480px, 768px, 1024px. - Избегать фиксированных размеров для колонок, использовать
frили процентные значения. - Тестировать сетку на разных разрешениях, чтобы элементы не перекрывали друг друга и сохраняли читаемость.
- Комбинировать Grid и Flexbox, если часть контента требует точной выравнивающей логики, а другая – гибкой.
Изменение размеров шрифтов и изображений для разных экранов

Для обеспечения читаемости на экранах с разным разрешением используйте относительные единицы измерения для шрифтов, такие как em, rem и vw. Например, базовый размер текста можно задать как 16px для десктопа и масштабировать с помощью clamp(14px, 2vw, 18px) для мобильных устройств.
Изображения следует делать адаптивными через max-width: 100% и height: auto, чтобы они автоматически подстраивались под ширину контейнера. Для крупных дисплеев можно использовать медиазапросы с конкретными значениями ширины, например:
@media (min-width: 1200px) – изображения шириной до 1200px; @media (max-width: 768px) – масштабирование до 90% от исходного размера.
Для шрифтов и изображений полезно сочетать медиазапросы с CSS-переменными. Например, переменная —font-size-base может изменяться в зависимости от ширины экрана:
:root { —font-size-base: 16px; }
@media (max-width: 768px) { —font-size-base: 14px; }
Изображения высокого разрешения на мобильных устройствах можно заменять на оптимизированные версии с помощью srcset и sizes, снижая вес страницы и ускоряя загрузку.
Использование flexible typography и адаптивных изображений совместно позволяет избежать горизонтальной прокрутки и гарантирует визуальное соответствие макету на любых устройствах.
Проверка работы медиа запросов в браузерах и эмуляторах
Для тестирования медиа запросов рекомендуется использовать встроенные инструменты разработчика современных браузеров, таких как Chrome DevTools, Firefox Developer Tools и Edge DevTools. В Chrome это делается через комбинацию Ctrl+Shift+I или Cmd+Option+I на macOS, затем активируется режим устройства (Toggle Device Toolbar) с выбором точных размеров экрана или предустановленных моделей устройств.
Важно проверять не только ширину окна, но и параметры device pixel ratio и ориентацию (portrait/landscape), так как некоторые медиа запросы зависят от этих характеристик. Например, запрос @media (min-width: 768px) and (orientation: landscape) может вести себя иначе на смартфоне с высоким DPI.
Для динамического тестирования полезно изменять размеры окна браузера вручную и наблюдать за реакцией CSS. В Chrome DevTools можно задать пользовательские размеры и сохранить несколько профилей для быстрого переключения. Firefox позволяет дополнительно эмулировать сенсорное взаимодействие и сетевые условия.
Помимо браузеров, можно использовать онлайн эмуляторы, такие как Responsinator, Screenfly или встроенные эмуляторы в Figma и Webflow. Они помогают выявить ошибки рендеринга на устройствах с нестандартными разрешениями, где реальные девайсы недоступны.
Для автоматизированного тестирования медиа запросов применяют инструменты визуального регрессионного тестирования, например Percy или BackstopJS. Они сравнивают скриншоты страниц при разных разрешениях и выявляют расхождения в стилях, что исключает ручную проверку каждого устройства.
Рекомендуется проверять страницы на нескольких браузерах одновременно, включая мобильные версии Safari на iOS, так как рендеринг CSS может отличаться. Особое внимание стоит уделять медиазапросам, использующим max-width, min-width и orientation, поскольку их интерпретация браузерами иногда имеет различия.
Вопрос-ответ:
Что такое медиа запросы в CSS и зачем они нужны?
Медиа запросы — это специальные правила в CSS, которые позволяют применять разные стили в зависимости от характеристик устройства, таких как ширина экрана, ориентация или разрешение. С их помощью можно создавать страницы, которые корректно отображаются как на мобильных телефонах, так и на больших мониторах, без необходимости поддерживать отдельные версии сайта для разных устройств.
Как правильно писать медиа запрос для изменения стилей на мобильных устройствах?
Чтобы изменить стили для экранов с небольшой шириной, обычно используют правило @media с условием max-width. Например, @media (max-width: 600px) { ... } применяет указанные стили для экранов шириной 600 пикселей и меньше. Внутри блока можно переопределять размеры шрифтов, отступы, ширину элементов и другие свойства, чтобы контент оставался удобным для просмотра на маленьких экранах.
Можно ли применять несколько условий в одном медиа запросе?
Да, CSS поддерживает объединение нескольких условий с помощью логических операторов and, or и not. Например, @media (min-width: 600px) and (max-width: 1200px) { ... } задаёт стили для экранов шириной от 600 до 1200 пикселей. Также можно комбинировать условия по ориентации экрана или разрешению, чтобы точнее управлять отображением элементов.
Какие ошибки чаще всего встречаются при использовании медиа запросов?
Одна из частых ошибок — использование фиксированных размеров вместо диапазонов, что может привести к резким переходам стилей при изменении ширины экрана. Ещё одна ошибка — дублирование правил без необходимости, что усложняет поддержку кода. Иногда забывают учитывать ориентацию экрана или плотность пикселей, из-за чего изображения и шрифты могут выглядеть нечетко на некоторых устройствах.
Можно ли тестировать медиа запросы без физического устройства?
Да, большинство современных браузеров предоставляют инструменты разработчика, позволяющие изменять размеры окна и имитировать разные устройства. Например, в Chrome есть режим «Device Toolbar», где можно выбрать смартфон, планшет или задать свои размеры экрана. Это помогает проверить, как медиа запросы работают на разных экранах, не используя реальные устройства.
