foundation

Клавиатурная навигация и фокус

Держите controls достижимыми, focus видимым, DOM-порядок осмысленным, а кастомные действия — с клавиатуры.

Доступ с клавиатуры — базовое требование. Интерактивные элементы достижимы в логическом DOM-порядке, показывают видимый focus, активируются ожидаемыми клавишами и без ловушек. Нативные `a`, `button`, `input`, `select`, `textarea`, `summary` и `dialog` сокращают кастомный focus-код.

Модальные dialog переносят focus внутрь, удерживают Tab до закрытия и возвращают focus на триггер. Skip links обходят повторяющуюся навигацию.

На интервью: focus в модалке, skip links, tab order, roving `tabindex`, почему `tabindex` > 0 — smell.

Типовые ошибки: outline убран без замены; только click; DOM-порядок ≠ визуальный.

Компромисс: визуальный tab order против поддерживаемой DOM-последовательности — чините структуру, а не положительный `tabindex`.

Чеклист:

  • Tab, Shift+Tab, Enter, Space.
  • Видимый focus.
  • Избегайте `tabindex` > 0.
  • Focus dialog при open/close.