Gernar
Frontend DeveloperCSS

Интервью-вопрос

Что такое адаптивная верстка

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

Добавлен
Редакция

Подготовьте короткий ответ и пару деталей на случай уточняющих вопросов.

🐰0
🥚0

Мини-квиз

Проверка перед разбором

Несколько быстрых вопросов перед разбором. Так проще поймать места, которые только кажутся понятными.

Вопрос 1 из 50 правильно

Как лучше сказать, что такое адаптивная верстка?

Вы хотите дать короткое определение без ухода в общую теорию дизайна.

Варианты ответа

Разбор

Разобраться, а не зазубрить

Дальше разбираем суть, типичные уточнения и места, где легко сказать лишнее или перепутать термины.

Базовая идея

Адаптивная верстка нужна, чтобы один интерфейс оставался удобным в разных условиях. Пользователь может открыть страницу на телефоне, ноутбуке, большом мониторе, с системным зумом, в альбомной ориентации или с медленной сетью. Если макет рассчитан только на один размер, появляются горизонтальный скролл, мелкий текст, неудобные кнопки и потерянные функции.

Хороший ответ на интервью можно построить так: сначала назовите цель, потом инструменты, затем практический риск.

Адаптивная верстка подстраивает интерфейс под экран и контекст использования. Для этого я использую гибкие сетки, относительные единицы, медиазапросы, адаптивные изображения и проверяю, что важные сценарии остаются доступными на мобильном и десктопе.

Какие инструменты стоит назвать

Не нужно перечислять все CSS-возможности подряд. Лучше покажите, что понимаете, где каждая помогает.

  • Flexbox удобен для одномерного расположения, переносов и выравнивания.
  • Grid удобен для двухмерных сеток, карточек и областей страницы.
  • @media меняет правила, когда макету не хватает места или меняется устройство ввода.
  • rem, %, vw, clamp() помогают не привязывать все к фиксированным пикселям.
  • srcset и sizes помогают не грузить на телефон изображение, рассчитанное на большой монитор.

Важно не говорить, что адаптивность равна медиазапросам. Часто устойчивый макет можно сделать без большого числа брейкпоинтов.

Как выбирать подход

Как рассуждать про адаптивность

1Сначала нужен базовый интерфейс для всех?
Сделайте mobile-first основу без лишних зависимостей от ширины.
2Контент начинает ломаться на конкретной ширине?
Добавьте брейкпоинт там, где макет реально теряет читаемость.
3Компонент живет в разных контейнерах?
Рассмотрите container queries вместо привязки только к viewport.
4Есть тяжелые изображения или видео?
Настройте адаптивную загрузку, размеры и резервирование места.

Если вас просят объяснить процесс, не начинайте с набора размеров устройств. Сначала смотрите на контент и пользовательский сценарий. Брейкпоинт нужен там, где карточка становится слишком узкой, меню перестает помещаться, текст теряет читаемость или кнопка становится неудобной для нажатия.

Это звучит сильнее, чем ответ "я делаю 768 и 1024". Такой ответ показывает, что вы не просто копируете сетку из фреймворка, а проверяете качество интерфейса.

Пример безопасной сетки

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

/* Плохо: сетка легко ломается на промежуточных ширинах */
.cards {
  display: flex;
}

.card {
  width: 320px;
}

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

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
  gap: 1rem;
}

Такой код не отменяет медиазапросы полностью, но уменьшает их количество. Макет лучше переживает промежуточные ширины, длинный контент и разные размеры контейнера.

Mobile-first и брейкпоинты

Mobile-first означает, что базовые стили подходят для узкого экрана, а затем интерфейс расширяется для больших размеров. Это полезно, потому что мобильная версия обычно сильнее ограничена: меньше места, медленнее сеть, тач-ввод, другой порядок приоритетов.

.layout {
  display: grid;
  gap: 1rem;
}

@media (min-width: 48rem) {
  .layout {
    grid-template-columns: 16rem 1fr;
  }
}

В ответе можно добавить, что mobile-first не значит думать только о телефонах. Это способ задать простую базу и постепенно усложнять интерфейс там, где для этого есть место.

Что может сломаться на практике

Безопасный подход
  1. 1Собрать контент в один читаемый поток
  2. 2Сделать гибкую сетку без жестких ширин
  3. 3Добавить брейкпоинты по поломке контента
  4. 4Проверить клавиатуру, тач и системный зум
  5. 5Оптимизировать изображения под реальные размеры
Рискованный подход
  1. 1Сверстать только десктопный макет
  2. 2Поставить фиксированные ширины в пикселях
  3. 3Спрятать все, что не помещается
  4. 4Проверить один размер в DevTools
  5. 5Оставить тяжелые десктопные картинки на мобильном

Самая частая ловушка: сделать страницу визуально похожей на макет, но потерять сценарий пользователя. Например, фильтры на десктопе стоят в сайдбаре, а на телефоне их просто скрыли. Визуально стало чисто, но пользователь больше не может найти нужный товар.

Безопаснее перенести фильтры в кнопку "Фильтры", открыть их в модальном окне или drawer и сохранить фокус, закрытие с клавиатуры и понятное состояние выбранных параметров.

Адаптивность и доступность

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

Если вы меняете порядок блоков через CSS, проверьте, не стал ли визуальный порядок конфликтовать с порядком чтения и фокуса. Это особенно важно для клавиатуры и скринридеров.

Адаптивные изображения и загрузка

Картинки часто дают самый заметный практический эффект. Если на телефон загружается десктопное изображение шириной 2400 пикселей, страница будет медленнее, даже если CSS уменьшит его до 360 пикселей.

<img
  src="/images/hero-800.webp"
  srcset="/images/hero-400.webp 400w, /images/hero-800.webp 800w, /images/hero-1600.webp 1600w"
  sizes="(max-width: 48rem) 100vw, 50vw"
  width="800"
  height="500"
  alt="Интерфейс продукта"
/>

Здесь браузер получает варианты и выбирает подходящий ресурс. Атрибуты width и height помогают зарезервировать место и снизить риск скачков layout.

Частые ошибки

Где обычно ошибаются

Проверьте формулировки, которые звучат уверенно, но на интервью быстро выдают пробелы.

  1. 1

    Путать адаптивность с масштабированием

    Если просто уменьшить блоки, текст станет мелким, кнопки станут неудобными, а пользователь получит плохой UX. Лучше менять структуру макета, количество колонок, отступы и поведение навигации под доступное пространство.
  2. 2

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

    Набор вроде 320, 768, 1024 сам по себе ничего не гарантирует. Контент может сломаться между этими значениями, особенно при длинных словах, переводах и системном зуме. Лучше смотреть, где конкретный интерфейс теряет читаемость.
  3. 3

    Прятать важный контент на мобильном

    display: none может убрать нужную кнопку, фильтр или справочную информацию. Это ломает сценарий пользователя и иногда портит аналитику. Если место ограничено, лучше перестроить блок, свернуть его в понятный disclosure или перенести в доступное меню.
  4. 4

    Забывать про адаптивные изображения

    Большая картинка для десктопа на мобильной сети ухудшает LCP и тратит трафик. Используйте srcset, sizes, современные форматы и задавайте размеры, чтобы страница не прыгала при загрузке.
  5. 5

    Проверять только идеальный контент

    Макет может выглядеть хорошо на коротких заголовках, но развалиться на длинных именах, локализации и ошибках формы. Проверяйте реальные данные, переносы строк, переполнение, фокус и состояния загрузки.
  6. 6

    Менять визуальный порядок без проверки фокуса

    order, grid-area и перенос блоков могут сделать экран красивее, но клавиатура и скринридер пойдут по DOM-порядку. Если визуальный и логический порядок расходятся, пользователь теряет контекст. Лучше держать важные действия в понятном DOM-порядке и отдельно проверять навигацию с клавиатуры.

Follow-up

Что могут спросить дальше

Короткие ответы на вопросы, которыми проверяют практическое понимание адаптивной верстки.

Живые ответы

Видео с похожим вопросом

Если найдем публичные интервью с таким вопросом, добавим их сюда. Их удобно смотреть после теории, чтобы свериться с живыми ответами.

Пока видео нет. Когда появятся подходящие публичные интервью, добавим их в этот блок, чтобы можно было сравнить разбор с тем, как отвечают реальные кандидаты.

Содержание