Доступность (a11y) и ARIA

↑ 1.2 HTML · ← Предыдущая · → Следующая

Желательно~3 мин чтенияУровень: junior

Зачем это на собесе

Доступность — требование закона и признак зрелого фронтендера. Спрашивают про первое правило ARIA и управление фокусом.

Объяснение

Цель a11y: интерфейс должен быть пригоден для людей с нарушениями зрения, слуха, моторики и когнитивными особенностями (WCAG 2.2, уровни A/AA/AAA).

Основа доступности:

ОбластьПрактика
Семантикаправильные теги, landmarks, заголовки
Клавиатуравсе действия доступны с клавиатуры; логичный порядок Tab; видимый :focus-visible
Альтернативыalt, подписи к видео, транскрипты
Контрасттекст 4.5:1 (крупный 3:1), не передавать смысл только цветом
Формысвязанные label, сообщения об ошибках, aria-describedby
Динамикаоповещения aria-live, управление фокусом в модалках
Масштабвёрстка в rem, поддержка увеличения до 200%
Движениеуважать prefers-reduced-motion

ARIA добавляет семантику там, где нативных средств нет: role, aria-label, aria-labelledby, aria-expanded, aria-controls, aria-hidden, aria-live.

Первое правило ARIA: если можно использовать нативный элемент — используйте его, а не div + ARIA.

<button aria-expanded="false" aria-controls="menu" id="btn">Меню</button>
<ul id="menu" hidden>...</ul>
 
<div role="alert" aria-live="assertive">Не удалось сохранить</div>
<dialog id="dlg" aria-labelledby="dlg-title"><h2 id="dlg-title">Подтверждение</h2></dialog>

Модальные окна: фокус переходит в диалог, остаётся внутри (focus trap), Esc закрывает, после закрытия фокус возвращается. Нативный <dialog> и inert упрощают это.

Инструменты: Lighthouse, axe DevTools, eslint-plugin-vuejs-accessibility, проверка с VoiceOver/NVDA.

Нюансы и подводные камни

  • «Плохой ARIA хуже отсутствия ARIA»: неверная роль вводит в заблуждение.
  • aria-hidden на фокусируемом элементе — «призрачный» фокус.
  • outline: none без замены лишает клавиатурных пользователей ориентира.
  • Placeholder не заменяет label.
  • Автоматические проверки находят лишь часть проблем — нужна ручная проверка.

Практика

  1. Пройдите страницу только клавиатурой и исправьте ловушки фокуса.
  2. Прогоните axe и исправьте 5 замечаний.
  3. Сделайте доступное выпадающее меню и модалку.

Вопросы с ответами

Связанные темы