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

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

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

В этой статье я расскажу, как создать по-настоящему адаптивный сайт с помощью медиазапросов и резиновой верстки. Без воды, только практика — так, как мы делаем это в XSL.

Что такое адаптивный сайт и почему он важен

Адаптивный сайт — это ресурс, который корректно отображается на любом устройстве: от огромного монитора до смартфона с диагональю 5 дюймов. Ключевые преимущества:

  • Улучшенный UX: пользователю не нужно масштабировать страницу или скроллить по горизонтали.
  • SEO-бонусы: Google любит адаптивные сайты и ранжирует их выше.
  • Экономия ресурсов: один сайт вместо отдельных версий для десктопа и мобилы.
  • Конверсия: по данным Google, 61% пользователей уходят с сайта, если он не адаптирован под их устройство.

Резиновая верстка: основа адаптивности

Резиновая верстка (или fluid layout) — это подход, при котором элементы сайта масштабируются пропорционально размеру экрана. Вместо фиксированных пикселей используются относительные единицы: проценты, vw/vh, em/rem.

Как реализовать резиновую верстку

Вот базовые принципы, которые мы применяем в XSL:

  1. Используйте относительные единицы:
    • Ширина контейнера: width: 90% вместо width: 1200px.
    • Отступы и поля: padding: 2rem вместо padding: 30px.
    • Размеры шрифтов: font-size: 1.2rem вместо font-size: 18px.
  2. Максимальные и минимальные размеры:

    Чтобы элементы не растягивались до бесконечности или не сжимались до нечитаемости, используйте max-width и min-width. Например:

    container {
        width: 100%;
        max-width: 1200px;
        min-width: 320px;
    }
  3. Гибкие изображения:

    Изображения должны масштабироваться вместе с контейнером. Для этого добавьте в CSS:

    img {
        max-width: 100%;
        height: auto;
    }
  4. Flexbox и Grid:

    Современные CSS-технологии позволяют легко создавать гибкие макеты. Например, с помощью display: flex можно выровнять элементы по горизонтали или вертикали, а display: grid — создать сложные сетки.

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

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

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

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

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

Например, чтобы изменить стили для экранов шириной до 768px:

@media (max-width: 768px) {
    .container {
        width: 95%;
    }
    .menu {
        display: none;
    }
}

Как выбрать контрольные точки (breakpoints)

Контрольные точки — это ширины экранов, при которых меняется верстка. Вот стандартные значения, которые мы используем в XSL:

Устройство Ширина экрана (px)
Мобильные устройства (портрет) до 576
Мобильные устройства (альбом) 576–768
Планшеты 768–992
Ноутбуки и десктопы 992–1200
Большие мониторы 1200 и выше

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

/* Мобильные устройства (портрет) */
@media (max-width: 576px) {
    .header {
        flex-direction: column;
    }
    .button {
        width: 100%;
    }
}

/* Планшеты */
@media (min-width: 577px) and (max-width: 992px) {
    .sidebar {
        display: none;
    }
    .main-content {
        width: 80%;
    }
}

/* Десктопы */
@media (min-width: 993px) {
    .container {
        max-width: 1200px;
    }
    .grid {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
    }
}

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

1. Mobile-first подход

Начинайте верстку с мобильной версии, а затем адаптируйте ее под большие экраны. Это упрощает процесс и позволяет сосредоточиться на самом важном контенте.

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

Эмуляторы в браузере — это хорошо, но ничто не заменит тестирование на реальных смартфонах и планшетах. В XSL мы используем парк устройств для проверки верстки.

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

Большие изображения замедляют загрузку сайта на мобильных устройствах. Используйте форматы WebP или AVIF, а также сжимайте изображения с помощью инструментов вроде TinyPNG или ImageOptim.

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

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

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

Шрифты, заданные в пикселях, не масштабируются на мобильных устройствах. Используйте rem или em, чтобы текст оставался читаемым на любом экране.

Инструменты для создания адаптивных сайтов

Вот несколько инструментов, которые помогут вам в работе:

  • Chrome DevTools: встроенный инструмент для тестирования адаптивности прямо в браузере.
  • BrowserStack: платформа для тестирования на реальных устройствах.
  • Responsinator: онлайн-сервис для быстрой проверки адаптивности.
  • Flexbox Froggy и Grid Garden: интерактивные игры для изучения Flexbox и Grid.
  • Bootstrap: фреймворк с готовыми адаптивными компонентами.

Заключение

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

В XSL мы всегда следуем принципу: «Лучше потратить время на адаптивность сейчас, чем терять клиентов потом». Если у вас нет ресурсов на самостоятельную разработку, обращайтесь к нам — мы создадим для вас сайт, который будет одинаково хорошо выглядеть на любом устройстве.

Удачи в создании адаптивных проектов! Если остались вопросы — пишите в комментариях, обсудим.

от автора

написал в