Интервью-вопрос
Чем полезна семантическая верстка
Семантическая верстка помогает описать смысл страницы в HTML. Так интерфейс становится понятнее для скринридеров, команды и поисковых систем.
- Добавлен
- Редакция
Подготовьте короткий ответ и пару деталей на случай уточняющих вопросов.
Мини-квиз
Проверка перед разбором
Несколько быстрых вопросов перед разбором. Так проще поймать места, которые только кажутся понятными.
Вопрос 1 из 50 правильно
Разбор
Разобраться, а не зазубрить
Дальше разбираем суть, типичные уточнения и места, где легко сказать лишнее или перепутать термины.
Базовая идея
Семантическая верстка отвечает на простой вопрос. Что это за часть интерфейса по смыслу. div говорит только "это контейнер". nav говорит "это навигация". main говорит "это основной контент". button говорит "это действие".
Поэтому не ограничивайтесь списком HTML5-тегов. Сразу покажите последствия. Пользователю со скринридером легче перемещаться по странице. Поисковику легче понять структуру. Разработчику проще читать и менять код без угадывания.
Что сказать на интервью
Можно ответить так:
Семантическая верстка делает HTML понятным по смыслу. Я использую теги по назначению.
navдля навигации,mainдля основного контента,buttonдля действий,aдля переходов,articleдля самостоятельных материалов. Это улучшает доступность, помогает SEO и снижает стоимость поддержки. Структура страницы читается без догадок.
Если хотите усилить ответ, добавьте границу:
Семантика не значит заменить каждый
divнаsection. Тег выбирается по смыслу. Если нативного тега достаточно, я не добавляю лишнюю ARIA. Если делаю кастомный компонент, проверяю роль, фокус и управление с клавиатуры.
Как выбирать тег на практике
В реальной работе семантика чаще всего ломается не в больших рассуждениях, а в мелких компонентах. Например, кликабельная карточка сделана не ссылкой, кнопка сделана через div, ссылка работает через обработчик onClick, а заголовок выбран по размеру шрифта. Такие решения кажутся быстрыми, но потом создают проблемы с клавиатурой, скринридерами, тестами и поддержкой.
Быстрый выбор семантики
Используйте <code>button</code>, а не кликабельный <code>div</code>.Используйте ссылку <code>a href</code>, чтобы работали клавиатура, контекстное меню и открытие в новой вкладке.Оберните его в один <code>main</code>, чтобы пользователь мог быстро перейти к главному содержимому.Рассмотрите <code>article</code>. Для обычной группы по теме чаще подходит <code>section</code> с заголовком.Только тогда добавляйте ARIA, проверяя роль, имя и клавиатурное поведение.Пример плохого и безопасного варианта
Плохой вариант. Элемент выглядит как кнопка, но в HTML это контейнер.
function OpenModal({ onOpen }) {
return (
<div className="button" onClick={onOpen}>
Открыть фильтры
</div>
);
}Что сломается. Такой элемент не является кнопкой для вспомогательных технологий, не получает правильное поведение с клавиатуры по умолчанию и хуже читается в коде. Можно добавить role, tabIndex и обработку клавиш, но это лишняя работа и риск забыть деталь.
Безопаснее так:
function OpenModal({ onOpen }) {
return (
<button type="button" className="button" onClick={onOpen}>
Открыть фильтры
</button>
);
}Теперь смысл и поведение совпадают. Внешний вид все еще можно полностью контролировать через CSS.
Доступность и навигация по странице
Для accessibility важны не только отдельные кнопки и ссылки, но и общая структура. Landmarks вроде header, nav, main, aside и footer помогают пользователю быстро переходить между крупными областями страницы. Правильные заголовки помогают понять иерархию контента.
Если вместо структуры есть только вложенные div, пользователь скринридера проходит больше лишнего контента. Это плохой UX, даже если визуально страница выглядит аккуратно.
SEO без переобещаний
Семантическая верстка помогает поисковым системам понять, где основной контент, заголовки, навигация, дата, статья или список. Это полезно для индексации и сниппетов. Но не стоит говорить, что один тег article автоматически поднимет страницу в выдаче.
Точная формулировка звучит так. Семантика поддерживает SEO, потому что делает структуру документа понятнее. Но позиции зависят также от качества контента, технической доступности страницы для индексации, метаданных, производительности и других факторов.
Что важно в React и дизайн-системах
Во фронтенде семантика часто прячется внутри компонентов. Если компонент Button рендерит div, ошибка распространяется на весь проект. Если компонент Link не рендерит настоящую ссылку с href, пользователь может потерять открытие в новой вкладке, копирование ссылки и ожидаемое поведение клавиатуры.
Поэтому на интервью можно добавить практический вывод. Я проверяю не только JSX на странице, но и то, какой HTML реально получается в DOM. Особенно для кнопок, ссылок, форм, модальных окон, меню и карточек.
Частые ошибки
Где обычно ошибаются
Проверьте формулировки, которые звучат уверенно, но на интервью быстро выдают пробелы.
- 1
Верстать все через div и span
Визуально страница может выглядеть нормально, но смысловая структура теряется. Скринридеру сложнее найти меню, основной контент и элементы управления. Команде сложнее поддерживать разметку. Безопаснее сначала выбрать нативный тег, а потом стилизовать его CSS. - 2
Делать div кнопкой
div onClickне получает все поведение кнопки автоматически. У него нет правильной роли, фокуса и управления с клавиатуры из коробки. Это ломает доступность и часто создает баги в формах и модальных окнах. Если элемент запускает действие, используйтеbutton type="button"и стилизуйте его как нужно. - 3
Использовать ARIA вместо HTML
ARIA полезна, когда нативного HTML недостаточно, но она не должна маскировать плохую разметку. Неправильная роль может сделать интерфейс еще менее понятным для вспомогательных технологий. На интервью лучше сказать так. no ARIA is better than bad ARIA, поэтому сначала нативная семантика. - 4
Выбирать тег по внешнему виду
Например, не стоит использоватьh3только потому, что он выглядит меньше, илиsectionдля любого контейнера. Это ломает структуру документа и навигацию по заголовкам. Размер, отступы и цвет должны жить в CSS, а HTML должен описывать смысл. - 5
Обещать, что семантика сама поднимет SEO
Семантика помогает поисковым системам понимать страницу, но не заменяет контент, скорость, индексацию, метатеги и внутреннюю перелинковку. Лучше звучит такая формулировка. Семантический HTML снижает технический шум и поддерживает SEO, но не является единственным фактором ранжирования.
Follow-up
Что могут спросить дальше
Короткие ответы на вопросы, которые часто идут следом за темой семантики, доступности и практических ограничений HTML.
Живые ответы
Видео с похожим вопросом
Если найдем публичные интервью с таким вопросом, добавим их сюда. Их удобно смотреть после теории, чтобы свериться с живыми ответами.
Пока видео нет. Когда появятся подходящие публичные интервью, добавим их в этот блок, чтобы можно было сравнить разбор с тем, как отвечают реальные кандидаты.
Актуален ли SCSS 😎
SCSS остается актуальным, но его стоит выбирать осознанно: он помогает с модульностью и переиспользованием стилей, но не заменяет современные возможности CSS и не решает изоляцию сам по себе. На странице разбираем, как ответить на интервью и где проходит граница между SCSS, CSS Modules и CSS-in-JS.
Что происходит при медленной загрузке CSS 😎
Браузер обычно задерживает первый рендер, пока не получит блокирующий CSS, а пользователь видит белый экран, FOUC или сдвиги интерфейса. Разбираем, как это объяснить на интервью и какие оптимизации назвать без опасных упрощений.