Интервью-вопрос
Что такое адаптивная верстка
Адаптивная верстка делает интерфейс удобным на разных экранах и при разных способах ввода. В ответе важно говорить не только про медиазапросы, но и про доступность, производительность и реальные сценарии пользователя.
- Добавлен
- Редакция
Подготовьте короткий ответ и пару деталей на случай уточняющих вопросов.
Мини-квиз
Проверка перед разбором
Несколько быстрых вопросов перед разбором. Так проще поймать места, которые только кажутся понятными.
Вопрос 1 из 50 правильно
Разбор
Разобраться, а не зазубрить
Дальше разбираем суть, типичные уточнения и места, где легко сказать лишнее или перепутать термины.
Базовая идея
Адаптивная верстка нужна, чтобы один интерфейс оставался удобным в разных условиях. Пользователь может открыть страницу на телефоне, ноутбуке, большом мониторе, с системным зумом, в альбомной ориентации или с медленной сетью. Если макет рассчитан только на один размер, появляются горизонтальный скролл, мелкий текст, неудобные кнопки и потерянные функции.
Хороший ответ на интервью можно построить так: сначала назовите цель, потом инструменты, затем практический риск.
Адаптивная верстка подстраивает интерфейс под экран и контекст использования. Для этого я использую гибкие сетки, относительные единицы, медиазапросы, адаптивные изображения и проверяю, что важные сценарии остаются доступными на мобильном и десктопе.
Какие инструменты стоит назвать
Не нужно перечислять все CSS-возможности подряд. Лучше покажите, что понимаете, где каждая помогает.
Flexboxудобен для одномерного расположения, переносов и выравнивания.Gridудобен для двухмерных сеток, карточек и областей страницы.@mediaменяет правила, когда макету не хватает места или меняется устройство ввода.rem,%,vw,clamp()помогают не привязывать все к фиксированным пикселям.srcsetиsizesпомогают не грузить на телефон изображение, рассчитанное на большой монитор.
Важно не говорить, что адаптивность равна медиазапросам. Часто устойчивый макет можно сделать без большого числа брейкпоинтов.
Как выбирать подход
Как рассуждать про адаптивность
Сделайте mobile-first основу без лишних зависимостей от ширины.Добавьте брейкпоинт там, где макет реально теряет читаемость.Рассмотрите container queries вместо привязки только к viewport.Настройте адаптивную загрузку, размеры и резервирование места.Если вас просят объяснить процесс, не начинайте с набора размеров устройств. Сначала смотрите на контент и пользовательский сценарий. Брейкпоинт нужен там, где карточка становится слишком узкой, меню перестает помещаться, текст теряет читаемость или кнопка становится неудобной для нажатия.
Это звучит сильнее, чем ответ "я делаю 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Собрать контент в один читаемый поток
- 2Сделать гибкую сетку без жестких ширин
- 3Добавить брейкпоинты по поломке контента
- 4Проверить клавиатуру, тач и системный зум
- 5Оптимизировать изображения под реальные размеры
- 1Сверстать только десктопный макет
- 2Поставить фиксированные ширины в пикселях
- 3Спрятать все, что не помещается
- 4Проверить один размер в DevTools
- 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
Путать адаптивность с масштабированием
Если просто уменьшить блоки, текст станет мелким, кнопки станут неудобными, а пользователь получит плохой UX. Лучше менять структуру макета, количество колонок, отступы и поведение навигации под доступное пространство. - 2
Выбирать брейкпоинты только по устройствам
Набор вроде320,768,1024сам по себе ничего не гарантирует. Контент может сломаться между этими значениями, особенно при длинных словах, переводах и системном зуме. Лучше смотреть, где конкретный интерфейс теряет читаемость. - 3
Прятать важный контент на мобильном
display: noneможет убрать нужную кнопку, фильтр или справочную информацию. Это ломает сценарий пользователя и иногда портит аналитику. Если место ограничено, лучше перестроить блок, свернуть его в понятный disclosure или перенести в доступное меню. - 4
Забывать про адаптивные изображения
Большая картинка для десктопа на мобильной сети ухудшает LCP и тратит трафик. Используйтеsrcset,sizes, современные форматы и задавайте размеры, чтобы страница не прыгала при загрузке. - 5
Проверять только идеальный контент
Макет может выглядеть хорошо на коротких заголовках, но развалиться на длинных именах, локализации и ошибках формы. Проверяйте реальные данные, переносы строк, переполнение, фокус и состояния загрузки. - 6
Менять визуальный порядок без проверки фокуса
order, grid-area и перенос блоков могут сделать экран красивее, но клавиатура и скринридер пойдут по DOM-порядку. Если визуальный и логический порядок расходятся, пользователь теряет контекст. Лучше держать важные действия в понятном DOM-порядке и отдельно проверять навигацию с клавиатуры.
Follow-up
Что могут спросить дальше
Короткие ответы на вопросы, которыми проверяют практическое понимание адаптивной верстки.
Живые ответы
Видео с похожим вопросом
Если найдем публичные интервью с таким вопросом, добавим их сюда. Их удобно смотреть после теории, чтобы свериться с живыми ответами.
Пока видео нет. Когда появятся подходящие публичные интервью, добавим их в этот блок, чтобы можно было сравнить разбор с тем, как отвечают реальные кандидаты.
Что такое CSS 😎
CSS описывает внешний вид HTML-документа и управляет макетом, цветами, шрифтами, состояниями и адаптивностью. На странице разбираем, как коротко ответить на интервью и какие практические риски важно упомянуть.
Что такое box-sizing 😎
box-sizing задает, входят ли padding и border в указанные width и height. Разбираем разницу между content-box и border-box, типичные баги в верстке и безопасную формулировку для интервью.