Gernar
Frontend DeveloperHTML и доступность

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

Чем полезна семантическая верстка

Семантическая верстка помогает описать смысл страницы в HTML. Так интерфейс становится понятнее для скринридеров, команды и поисковых систем.

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

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

🐰0
🥚0

Мини-квиз

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

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

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

Что ответить, если вас спрашивают о пользе семантической верстки?

Вы хотите начать коротко и сразу показать практический смысл.

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

Разбор

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

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

Базовая идея

Семантическая верстка отвечает на простой вопрос. Что это за часть интерфейса по смыслу. div говорит только "это контейнер". nav говорит "это навигация". main говорит "это основной контент". button говорит "это действие".

Поэтому не ограничивайтесь списком HTML5-тегов. Сразу покажите последствия. Пользователю со скринридером легче перемещаться по странице. Поисковику легче понять структуру. Разработчику проще читать и менять код без угадывания.

Что сказать на интервью

Можно ответить так:

Семантическая верстка делает HTML понятным по смыслу. Я использую теги по назначению. nav для навигации, main для основного контента, button для действий, a для переходов, article для самостоятельных материалов. Это улучшает доступность, помогает SEO и снижает стоимость поддержки. Структура страницы читается без догадок.

Если хотите усилить ответ, добавьте границу:

Семантика не значит заменить каждый div на section. Тег выбирается по смыслу. Если нативного тега достаточно, я не добавляю лишнюю ARIA. Если делаю кастомный компонент, проверяю роль, фокус и управление с клавиатуры.

Как выбирать тег на практике

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

Быстрый выбор семантики

1Элемент выполняет действие на текущей странице?
Используйте <code>button</code>, а не кликабельный <code>div</code>.
2Элемент ведет на другой URL или якорь?
Используйте ссылку <code>a href</code>, чтобы работали клавиатура, контекстное меню и открытие в новой вкладке.
3Блок является основной областью страницы?
Оберните его в один <code>main</code>, чтобы пользователь мог быстро перейти к главному содержимому.
4Блок можно читать отдельно от страницы?
Рассмотрите <code>article</code>. Для обычной группы по теме чаще подходит <code>section</code> с заголовком.
5Нативного тега не хватает?
Только тогда добавляйте 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. 1

    Верстать все через div и span

    Визуально страница может выглядеть нормально, но смысловая структура теряется. Скринридеру сложнее найти меню, основной контент и элементы управления. Команде сложнее поддерживать разметку. Безопаснее сначала выбрать нативный тег, а потом стилизовать его CSS.
  2. 2

    Делать div кнопкой

    div onClick не получает все поведение кнопки автоматически. У него нет правильной роли, фокуса и управления с клавиатуры из коробки. Это ломает доступность и часто создает баги в формах и модальных окнах. Если элемент запускает действие, используйте button type="button" и стилизуйте его как нужно.
  3. 3

    Использовать ARIA вместо HTML

    ARIA полезна, когда нативного HTML недостаточно, но она не должна маскировать плохую разметку. Неправильная роль может сделать интерфейс еще менее понятным для вспомогательных технологий. На интервью лучше сказать так. no ARIA is better than bad ARIA, поэтому сначала нативная семантика.
  4. 4

    Выбирать тег по внешнему виду

    Например, не стоит использовать h3 только потому, что он выглядит меньше, или section для любого контейнера. Это ломает структуру документа и навигацию по заголовкам. Размер, отступы и цвет должны жить в CSS, а HTML должен описывать смысл.
  5. 5

    Обещать, что семантика сама поднимет SEO

    Семантика помогает поисковым системам понимать страницу, но не заменяет контент, скорость, индексацию, метатеги и внутреннюю перелинковку. Лучше звучит такая формулировка. Семантический HTML снижает технический шум и поддерживает SEO, но не является единственным фактором ранжирования.

Follow-up

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

Короткие ответы на вопросы, которые часто идут следом за темой семантики, доступности и практических ограничений HTML.

Живые ответы

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

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

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

Содержание