ARIA (Accessible Rich Internet Applications) — это набор атрибутов, предназначенных для повышения доступности веб-приложений. Эти атрибуты позволяют ассистивным технологиям, таким как экранные читалки, корректно интерпретировать динамический контент и интерактивные элементы.
Ключевые категории ARIA атрибутов:
role="button",
role="navigation").aria-checked,
aria-disabled).aria-expanded, aria-selected).ARIA атрибуты применяются к HTML-элементам для улучшения семантики:
<button aria-pressed="false" role="button">Нажми меня</button>
Здесь:
role="button" указывает, что элемент следует
воспринимать как кнопку, даже если это <div> или
<span>.aria-pressed="false" показывает, что кнопка в ненажатом
состоянии.Lighthouse — это инструмент для аудита веб-приложений, включая проверку доступности. В контексте ARIA он выполняет следующие задачи:
aria-expanded, должны изменяться динамически в зависимости
от состояния элемента.aria-hidden и его влияние на доступность.Пример запуска Lighthouse для проверки доступности ARIA:
npx lighthouse https://example.com --only-categories=accessibility
В отчете можно увидеть:
Elements must have valid ARIA roles).aria-checked не
применен к интерактивному элементу).ARIA атрибуты часто управляются через JavaScript для интерактивных компонентов. Основные методы:
const button = document.querySelector('#toggleButton');
// Изменение состояния кнопки
button.addEventListener('click', () => {
const pressed = button.getAttribute('aria-pressed') === 'true';
button.setAttribute('aria-pressed', String(!pressed));
});
Особенности динамического управления:
menu, tabs,
dialog) требуется корректное обновление нескольких
атрибутов одновременно (aria-expanded,
aria-selected, aria-hidden).Минимизировать избыточные атрибуты Не добавлять
aria-* там, где элемент уже семантически корректен
(<button>, <nav>).
Поддерживать актуальные состояния Динамические атрибуты должны обновляться при каждом изменении интерфейса.
Использовать проверенные роли и состояния Lighthouse проверяет корректность роли относительно спецификации WAI-ARIA. Неверные значения вызывают предупреждения.
Следить за доступностью скрытого контента
Элементы с aria-hidden="true" не должны быть
интерактивными.
Для React, Vue и других SPA-библиотек важно использовать
aria-* через атрибуты компонентов:
<button
aria-pressed={isActive}
onCl ick={() => setIsActive(!isActive)}
>
Кнопка
</button>
Особенности для SPA:
MutationObserver для обновления атрибутов
может повысить точность отчетов.role элементу, который уже имеет
семантическое значение.aria-checked на <div> без
role="checkbox").aria-expanded="false").Правильное использование ARIA в связке с Lighthouse позволяет:
Каждый интерактивный компонент должен иметь корректно определенные роли и состояния, а их обновление должно происходить синхронно с визуальными изменениями. Lighthouse помогает выявлять ошибки, но ответственность за логическую корректность ARIA лежит на разработчике.