foundation

Нативная семантика перед ARIA

Предпочитайте нативные controls и добавляйте ARIA только когда семантику или state нельзя выразить одним HTML.

ARIA меняет accessibility tree, но не добавляет поведение браузера. `button` лучше `div role="button"`: уже есть focus, keyboard activation, disabled и интеграция с формами. Первое правило ARIA: если есть нативный элемент — используйте его.

ARIA — для имён, состояний и связей, которые HTML не выражает: `aria-expanded`, `aria-controls`, `aria-invalid`, `aria-live` — и атрибуты синхронны с реальным UI.

					<!-- Предпочтительно -->
<button type="button" aria-expanded="false" aria-controls="menu">Меню</button>

<!-- Избегайте, если хватает нативного -->
<div role="button" tabindex="0">Меню</div>
				

На интервью: первое правило ARIA, расчёт accessible name, типичные states.

Типовые ошибки: неверные roles хуже отсутствия ARIA; `aria-label`, скрывающий видимый текст.

Компромисс: быстрые div-виджеты против нативного поведения — ARIA именует state, но не воспроизводит keyboard и интеграцию с формами.

Чеклист:

  • Начинайте с нативного HTML.
  • ARIA только для недостающей семантики.
  • Синхронизируйте ARIA с state компонента.
  • Проверяйте accessibility tree.