Как создать адаптивный сайт: медиазапросы и гибкие сетки

Почему адаптивный дизайн — это must-have в 2024 году

Привет, это Кирилл Алехин, основатель веб-студии XSL в ОАЭ. Если вы до сих пор думаете, что адаптивный сайт — это опция, а не необходимость, позвольте мне вас переубедить. По данным StatCounter, более 60% трафика в мире приходится на мобильные устройства. Google уже давно использует mobile-first индексацию, а значит, если ваш сайт не дружит с телефонами, вы теряете позиции в поиске, клиентов и деньги.

Адаптивный дизайн — это не просто тренд, а базовый стандарт. Сегодня я расскажу, как создать сайт, который одинаково хорошо выглядит на любом устройстве, используя медиазапросы и гибкие сетки.

Основы адаптивного дизайна: подход mobile-first

Прежде чем погружаться в код, важно понять философию. Подход mobile-first означает, что вы начинаете разработку с мобильной версии, а затем адаптируете её под планшеты и десктопы. Почему?

  • Мобильные устройства имеют ограниченные ресурсы (медленный интернет, маленький экран).
  • Google индексирует мобильную версию первой.
  • Проще масштабировать дизайн вверх, чем ужимать десктопную версию.

В XSL мы всегда стартуем с мобильной версии. Это дисциплинирует: вы вынуждены убирать всё лишнее и фокусироваться на главном.

Гибкие сетки: основа адаптивной верстки

Жесткие фиксированные ширины — это прошлый век. Современные сайты строятся на гибких сетках, где элементы масштабируются пропорционально экрану. Как этого добиться?

Используем относительные единицы

Забудьте о пикселях. В адаптивном дизайне царствуют:

  • Проценты (%) — для ширины блоков.
  • em и rem — для шрифтов и отступов.
  • vw и vh — для элементов, зависящих от размера viewport.

Пример: если у вас есть контейнер с шириной 1200px на десктопе, на мобильном он должен занимать 100% ширины экрана. В CSS это выглядит так:

.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
}

Flexbox и Grid: современные инструменты для сеток

Два мощных инструмента для создания гибких макетов:

Flexbox CSS Grid
Одномерные макеты (строки или столбцы) Двумерные макеты (строки и столбцы одновременно)
Идеален для навигации, списков, карточек Отлично подходит для сложных макетов страниц
Поддержка: все современные браузеры Поддержка: все современные браузеры

В XSL мы комбинируем оба подхода. Например, для карточек товаров используем Flexbox, а для сложных лендингов — Grid.

Медиазапросы: как сайт понимает, на каком устройстве его открыли

Медиазапросы — это CSS-правила, которые применяются только при определенных условиях (например, ширина экрана). Они позволяют менять стили в зависимости от устройства.

Синтаксис медиазапросов

Базовый синтаксис выглядит так:

@media (условие) {
    селектор {
        свойство: значение;
    }
}

Например, чтобы изменить размер шрифта на экранах уже 768px:

@media (max-width: 768px) {
    body {
        font-size: 14px;
    }
}

Типичные контрольные точки (breakpoints)

Не существует универсальных значений, но есть общепринятые диапазоны:

  • 320px — 480px: Мобильные устройства (портрет).
  • 481px — 768px: Мобильные устройства (альбом), планшеты (портрет).
  • 769px — 1024px: Планшеты (альбом), маленькие ноутбуки.
  • 1025px — 1200px: Десктопы.
  • 1201px и выше: Большие мониторы.

В XSL мы не привязываемся к конкретным устройствам, а тестируем макеты на разных разрешениях. Иногда достаточно 3-4 контрольных точек, чтобы сайт выглядел идеально.

Продвинутые техники: медиазапросы для ориентации и плотности пикселей

Медиазапросы могут учитывать не только ширину экрана:

  • Ориентация: @media (orientation: landscape) — для альбомного режима.
  • Плотность пикселей: @media (-webkit-min-device-pixel-ratio: 2) — для Retina-дисплеев.
  • Тип устройства: @media (hover: hover) — для устройств с мышью (десктопы).

Практические советы от XSL

За годы работы в ОАЭ мы накопили опыт, которым делюсь с вами:

1. Тестируйте на реальных устройствах

Эмуляторы в браузере — это хорошо, но они не заменят тестирование на реальных устройствах. В XSL у нас есть парк тестовых гаджетов: от старых iPhone до последних моделей Samsung и Huawei.

2. Оптимизируйте изображения

Большие картинки убивают скорость загрузки на мобильных устройствах. Используйте:

  • srcset — для загрузки разных версий изображений в зависимости от экрана.
  • Формат WebP — он легче JPEG и PNG.
  • Lazy loading — загрузка изображений по мере прокрутки.

3. Не забывайте про touch-friendly элементы

На мобильных устройствах пальцы крупнее курсора мыши. Убедитесь, что:

  • Кнопки и ссылки имеют достаточный размер (минимум 48x48px).
  • Отступы между интерактивными элементами не менее 8px.
  • Выпадающие меню адаптированы под касания.

4. Используйте относительные единицы для шрифтов

Фиксированные размеры шрифтов на мобильных устройствах могут выглядеть слишком мелкими или крупными. Используйте rem и масштабируйте их через медиазапросы:

html {
    font-size: 16px;
}

@media (max-width: 768px) {
    html {
        font-size: 14px;
    }
}

5. Адаптируйте навигацию

На десктопе меню может быть горизонтальным, а на мобильном — сворачиваться в бургер. Примеры решений:

  • Бургер-меню — классика для мобильных версий.
  • Аккордеон — для длинных списков (например, каталог товаров).
  • Bottom navigation — удобно для мобильных приложений и сайтов.

Инструменты для ускорения разработки

Чтобы не писать всё с нуля, используйте готовые решения:

  • CSS-фреймворки: Bootstrap, Tailwind CSS, Foundation.
  • Генераторы сеток: CSS Grid Generator, Flexbox Generator.
  • Тестирование: BrowserStack, Responsinator, Chrome DevTools.
  • Оптимизация изображений: TinyPNG, Squoosh, ImageOptim.

В XSL мы разработали собственный фреймворк на базе Tailwind, который ускоряет верстку в 2 раза. Но даже если вы используете готовые решения, важно понимать, как они работают «под капотом».

Частые ошибки и как их избежать

Даже опытные разработчики иногда допускают ошибки в адаптивном дизайне. Вот самые распространенные:

1. Фиксированные высоты элементов

Высота блока в пикселях на мобильном устройстве может не поместиться на экран. Используйте min-height или относительные единицы.

2. Игнорирование контекста просмотра

На мобильных устройствах пользователи часто просматривают контент в одной руке. Убедитесь, что важные элементы (кнопки, формы) находятся в зоне досягаемости большого пальца.

3. Слишком сложные медиазапросы

Не стоит создавать медиазапрос для каждого пикселя. Ограничьтесь 3-4 контрольными точками и тестируйте промежуточные разрешения.

4. Забытые viewport мета-теги

Без этого тега мобильные браузеры будут отображать сайт как на десктопе. Добавьте в :


5. Неоптимизированные шрифты

Загрузка нескольких веб-шрифтов может замедлить сайт. Используйте font-display: swap и ограничьтесь 2-3 шрифтами.

Заключение: адаптивность — это про заботу о пользователе

Адаптивный сайт — это не техническая прихоть, а проявление уважения к вашим посетителям. Неважно, с какого устройства они заходят: с iPhone на пляже в Дубае или с ноутбука в офисе в Абу-Даби — они должны получить одинаково качественный опыт.

В XSL мы не просто верстаем сайты, мы создаем цифровые продукты, которые работают на бизнес. Если вам нужен адаптивный сайт, который конвертирует посетителей в клиентов, пишите нам — обсудим проект.

А на сегодня всё. Делитесь в комментариях, какие трудности у вас возникали с адаптивной версткой, и подписывайтесь на мой блог — будет ещё много полезного.

от автора

написал в