31. Доступність (A11y) веб-додатків. WCAG. Aria attributes. Контрастність кольорів. Навігація клавіатурою

Відео версія
(YouTube - для зворотнього зв'язку)

TL;DR

WCAG — гайдлайн для створення доступного додатку.

Рівень WCAG AA — мінімальний стандарт, якого ви маєте дотримуватися, зокрема відповідно до законодавства США та ЄС з 2025 року.

AOM (Accessibility Object Model) — семантична модель, яку використовують програми для читання з екрана (Screen readers).

Використовуйте семантичні HTML-елементи (header, footer, article тощо), якщо це можливо.

Порядок заголовків (H1…H7) важливий для доступності.

Надавайте перевагу нативним HTML-елементам: button, input, checkbox, radio тощо.

Якщо дизайн вимагає використання ненативних або несемантичних компонентів, використовуйте атрибут role. Документація.

Якщо ви змінюєте роль елемента через role, його поведінка має відповідати ролі. Наприклад, role="button" повинен активуватись при натисканні Enter або пробілу (Space), причому поведінка пробілу за замовчуванням (перехід на наступну сторінку) має бути відключена.

Мінімальний рівень контрастності для WCAG — AAA.

Інструменти тестування, як Lighthouse чи AXE, не гарантують реальної доступності вашого додатка. Вони перевіряють лише контрастність і наявність тегів/атрибутів під час ініціалізації, але не охоплюють якість цих атрибутів і, головне, навігацію клавіатурою.

Storybook допоможе тестувати доступність завдяки можливості перевірки стану кожного компонента.

Особистий досвід: 100% у Lighthouse = лише 20% реальної роботи. Решта 80% зусиль зазвичай іде на реалізацію навігації клавіатурою.

Tab та Shift+Tab повинні дозволяти доступ до всіх інтерактивних частин додатка. Усі елементи, з якими можна взаємодіяти, мають мати tabindex=0.

Фокусовані елементи мають бути візуально виділені. CSS-властивість outline — чудовий інструмент для цього.

Skip to main content — корисна функція, яка дозволяє швидко перейти до основного контенту сторінки.

Focus Trap — обов’язковий для модальних вікон або випадаючих меню, щоб користувачі не втрачали фокус.

Юзабіліті та доступність (Usability & Accessibility) тісно пов’язані. Думайте про зручність використання при проєктуванні клавіатурної навігації.

Автотести для клавіатурної навігації — обов’язкові! Зламати цю функціональність легко, але помітити проблему складно.

Реалізувати доступність додатка складно та дорого, але це покращує SEO, вашу карму та забезпечує юридичну безпеку!