В мире, где более 60% интернет-трафика приходится на мобильные устройства, адаптивная верстка перестала быть опцией — это обязательное требование. Но как превратить статичный макет в гибкий интерфейс, который идеально выглядит на экране смартфона, планшета и десктопа одновременно? Давайте разберем не только принципы, но и конкретные примеры кода, которые вы сможете применить в своих проектах уже сегодня.
Что такое адаптивная верстка на самом деле?
Адаптивная верстка (responsive web design) — это подход к созданию сайтов, при котором веб-страница автоматически подстраивается под размеры и ориентацию экрана устройства. В отличие от отдельной мобильной версии, здесь используется единый код, который трансформируется с помощью медиазапросов, гибких сеток и относительных единиц измерения.
Google с 2019 года использует mobile-first индексацию, что означает: если ваш сайт не адаптивен, он будет хуже ранжироваться даже в десктопном поиске.
Три кита адаптивности
1. Медиазапросы (Media Queries)
Это основа адаптивности. Медиазапросы позволяют применять разные стили CSS в зависимости от характеристик устройства. Самый распространенный подход — контроль по ширине viewport.
Пример базовых брейкпоинтов:
@media (max-width: 576px) { /* Стили для мобильных */ }
@media (min-width: 577px) and (max-width: 992px) { /* Планшеты */ }
@media (min-width: 993px) { /* Десктоп */ }
2. Гибкая сетка (Flexible Grid)
Вместо фиксированных пикселей используйте проценты или дробные единицы fr. Современный стандарт — CSS Grid и Flexbox.
Пример сетки на Flexbox:
.container {
display: flex;
flex-wrap: wrap;
}
.item {
flex: 1 1 300px; /* Базовый размер 300px, но может расти и сжиматься */
}
3. Относительные единицы и гибкие изображения
Замените px на %, vw, vh, rem. Для изображений используйте max-width: 100% и height: auto.
Практические примеры адаптивных компонентов
Пример 1: Навигационное меню
Десктопное горизонтальное меню превращается в "гамбургер" на мобильных:
/* Десктоп */
.nav-menu {
display: flex;
justify-content: space-between;
}
/* Мобильные */
@media (max-width: 768px) {
.nav-menu {
flex-direction: column;
display: none;
}
.hamburger {
display: block;
}
}
Пример 2: Карточки товаров
На десктопе показываем 4 карточки в ряд, на планшете — 2, на телефоне — 1:
.product-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
}
Свойство grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)) — магия CSS Grid. Оно автоматически создает колонки шириной минимум 250px, которые заполняют доступное пространство.
Пример 3: Адаптивная типографика
Используем clamp() для плавного изменения размера шрифта:
h1 {
font-size: clamp(1.5rem, 5vw, 3rem);
/* Минимум 1.5rem, идеально 5% от ширины viewport, максимум 3rem */
}
Мобильный-first подход
Начинайте проектировать с мобильной версии, затем добавляйте стили для более широких экранов. Это проще и соответствует логике прогрессивного улучшения.
- Создайте базовые стили для мобильных
- Добавляйте медиазапросы с min-width для планшетов
- Затем для десктопов
Инструменты для тестирования
- DevTools браузера (режим адаптивного дизайна)
- Real devices — обязательно тестируйте на реальных смартфонах
- Online-сервисы: BrowserStack, LambdaTest
Частые ошибки новичков
- Использование фиксированных размеров вместо относительных
- Забывают про touch-интерфейс (слишком маленькие кнопки)
- Не оптимизируют изображения для мобильных
- Игнорируют landscape-ориентацию
FAQ
В чем разница между адаптивным и отзывчивым дизайном?
В русскоязычной среде эти термины часто используют как синонимы. Технически, адаптивный (adaptive) может использовать разные макеты для конкретных брейкпоинтов, а отзывчивый (responsive) плавно масштабируется.
Сколько брейкпоинтов нужно использовать?
Не больше 3-4 основных. Ориентируйтесь на контент, а не на конкретные устройства. Добавляйте брейкпоинт там, где ваш макет "ломается".
Обязательно ли использовать CSS Grid и Flexbox?
Для современных проектов — да. Они созданы для адаптивности. Float и таблицы — устаревшие технологии для верстки.
Как адаптировать таблицы для мобильных?
Есть несколько подходов: горизонтальный скролл, преобразование в карточки, скрытие второстепенных колонок. Выбор зависит от типа данных.
Нужно ли делать отдельную версию для планшетов?
Обычно достаточно трех основных состояний: мобильное, планшетное (можно объединить с небольшим десктопом) и десктопное. Но всегда смотрите по аналитике вашей аудитории.