foundation

Semantic HTML

Используйте нативные элементы, landmarks, заголовки, labels и form controls, чтобы assistive technology получала корректную структуру по умолчанию.

Semantic HTML использует нативные элементы по их смыслу, чтобы assistive technology, клавиатура и поисковики получали структуру без лишнего ARIA. Landmarks (`<main>`, `<nav>`, `<header>`), иерархия заголовков, связка `<label>` и настоящие `<button>`/`<a>` — ответ по умолчанию на интервью до кастомных виджетов.

					<main>
  <h1>Checkout</h1>
  <form>
    <label for="email">Email</label>
    <input id="email" type="email" autocomplete="email" />
    <button type="submit">Pay</button>
  </form>
</main>
				

| Элемент | Зачем | |---------|-------| | `<button>` | Встроенная клавиатурная активация и role | | `<label for>` | Имя поля для screen readers | | Заголовки по порядку | Пропуск уровней ломает outline navigation | | `<nav>` | Прямой переход к регионам навигации |

На интервью: `<button>` vs `<a>`; почему `<div role="button">` — крайний случай; как landmarks помогают rotor-меню screen reader.

Типовые ошибки: div soup с click handlers; только placeholder вместо label; несколько `<h1>` без цели; icon-only кнопки без accessible name.

Компромисс — гибкость дизайна против бесплатной семантики и поведения платформы.

Чеклист:

  • Нативные контролы для действий и навигации.
  • У каждого input видимый label.
  • Логичный outline заголовков.
  • Проверка keyboard и имён screen reader на новых паттернах.