Glypha
Glypha
Гид по доступности

Доступность в интерфейсах Glypha

Как мы встраиваем стандарты WCAG 2.1 в каждый компонент дизайн-системы — от контраста текста до работы со скринридерами. Практическое руководство для дизайнеров и разработчиков.

Иллюстрация доступного интерфейса Glypha с увеличенным текстом и маркерами фокуса
Автор: Мария Ковалёва, lead accessibility engineer Обновлено: 14 марта 2024 Чтение: 9 минут Уровень: средний
О чём эта статья

Доступность — это не функция, а архитектура

Доступный продукт не «чинят» в конце спринта. Его проектируют с первого токена. В Glypha доступность зашита в саму структуру системы: токены, компоненты, состояния и документация.

В этом гиде мы разберём четыре темы: как мы интерпретируем стандарты WCAG 2.1, что именно делает Glypha за вас, по какому чек-листу тестировать каждый экран и как правильно готовиться к работе со скринридерами.


Материал основан на опыте реальных проектов: мы адаптировали дизайн-систему финтех-приложения «Атлас Банк» и SaaS-платформу для HR «Команда» под требования WCAG 2.1 уровня AA. Ниже — конкретные цифры и приёмы, которые сработали.

Раздел 01

Стандарты WCAG 2.1

WCAG — это не чек-лист из 50 пунктов, а четыре принципа. Разберём каждый и покажем, как он ложится на конкретные компоненты Glypha.

Воспринимаемость (Perceivable)

Контраст текста — минимум 4.5:1 для обычного и 3:1 для крупного шрифта (критерий 1.4.3). В Glypha базовая пара --g-text-main на --g-bg даёт 15.9:1. Все альтернативные тексты прописаны в токенах.

Управляемость (Operable)

Каждый интерактивный элемент должен быть достижим с клавиатуры (критерий 2.1.1). Мы добавили видимое состояние фокуса — 2px-обводку с отступом — на все кнопки, ссылки и поля. Никаких «ловушек» при переключении по Tab.

Понятность (Understandable)

Языки интерфейса объявлены атрибутом lang="ru", заголовки выстроены в логическую иерархию (h1 → h2 → h3), а ошибки валидации форм связываются с полями через aria-describedby.

Надёжность (Robust)

Код совместим со вспомогательными технологиями: мы используем семантические HTML-теги, избегаем кастомных ARIA-паттернов там, где есть нативные аналоги, и тестируем на NVDA, VoiceOver и JAWS.

Раздел 02

Как Glypha помогает в доступности

Доступность в Glypha — это не «дополнительный режим». Это базовые свойства системы, которые работают по умолчанию.

Цветовые токены с проверенным контрастом

Все пары «текст/фон» в палитре Glypha проходят автоматическую проверку на соответствие WCAG AA при сборке. Если дизайнер добавляет новый цвет, система сразу подсказывает, не нарушает ли он порог 4.5:1.

Состояния фокуса и hover в каждом компоненте

Кнопки, поля, ссылки и карточки из UI-кита уже содержат стили для :focus-visible. Минимальная зона нажатия — 44×44 px согласно рекомендации 2.5.8.

Адаптивная типографика

Базовый размер шрифта — 16px, заголовки масштабируются через clamp(). Пользователи могут увеличить размер текста в браузере до 200% без потери вёрстки.

Семантическая разметка из коробки

Компоненты формы (Input, Select, Checkbox, Radio) генерируют корректные пары <label> и aria-*. Модальные окна корректно «перехватывают» фокус и возвращают его при закрытии.

Поддержка prefers-reduced-motion

Все анимации и переходы автоматически отключаются, если пользователь включил «сокращённые движения» в настройках ОС. Это критично для людей с вестибулярными нарушениями.

Автопроверка при CI/CD

Интеграция с axe-core и Lighthouse позволяет запускать аудит доступности на каждом коммите. Средняя длительность проверки — 38 секунд на полный UI-кит из 312 компонентов.

4.5:1 Минимальный контраст текста во всех токенах
312 Компонентов, прошедших аудит axe-core
0 Критических ошибок WCAG 2.1 AA в текущем релизе
Раздел 03

Чек-лист для тестирования

Пользуйтесь этим списком перед каждым релизом. Он охватывает восемь групп проверок — от визуального контраста до работы с клавиатурой.

1. Визуальный контраст

Проверьте контраст: текст на фоне ≥ 4.5:1, крупный текст ≥ 3:1, UI-элементы и иконки ≥ 3:1. Не полагайтесь только на цвет — добавляйте текстовые подсказки.

2. Зоны нажатия

Каждый кликабельный элемент — минимум 44×44 px. Расстояние между соседними интерактивными объектами — не менее 8px.

3. Клавиатурная навигация

Пройдите весь экран только по Tab / Shift+Tab. Логика должна быть предсказуемой, без «слепых» зон. Escape закрывает модальные окна и дропдауны.

4. Альтернативный текст

Информационные изображения — с осмысленным alt. Декоративные — с alt="". Иконки с текстом — с aria-hidden.

5. Заголовки и структура

Один h1 на страницу, последовательная иерархия без пропусков уровней. Разделы навигации и контента — в семантических тегах <main>, <nav>, <article>.

6. Формы и валидация

Каждое поле связано с <label>. Ошибки объявляются через aria-invalid и aria-describedby. Обязательные поля помечены явно.

7. Динамический контент

Обновления через AJAX объявляются через aria-live="polite" или assertive. Тосты и уведомления не пропадают без предупреждения.

8. Анимации и движение

Проверьте поведение при prefers-reduced-motion: reduce. Параллакс, автопрокрутка и мигающие элементы ≥ 3 раза/сек — отключены.

Раздел 04

Кейсы использования скринридеров

Ниже — три реальных сценария, где мы дорабатывали компоненты Glypha после тестирования с NVDA, VoiceOver и JAWS.

Кейс 1: Таблица транзакций в «Атлас Банк»

Проблема: NVDA читала ячейки без привязки к заголовкам столбцов — пользователь не понимал, какой именно показатель описывается.


Решение: добавили scope="col" и scope="row" на заголовки, а для сложных ячеек — headers. После изменения VoiceOver на iOS корректно читает «Сумма, 12 марта: 4 500 рублей».


Результат: время самостоятельного чтения одной строки снизилось с 11 до 4 секунд.

Кейс 2: Дашборд SaaS «Команда»

Проблема: JAWS пропускал динамически обновляющиеся карточки метрик — пользователь с нарушением зрения не видел изменения KPI в реальном времени.


Решение: обернули контейнер карточек в role="region" aria-live="polite" и добавили скрытый заголовок aria-label="Обновлённые метрики за 5 минут". Теперь NVDA произносит изменения через 2 секунды после обновления.


Результат: доля пользователей со скринридерами, завершивших онбординг, выросла с 41% до 78%.

Кейс 3: Мультимедийный контент в «Гиде Glypha»

Проблема: видео с демонстрацией компонентов не было доступно для незрячих — отсутствовали субтитры и текстовый эквивалент.


Решение: добавили автоматические и ручные субтитры, расшифровку в виде транскрипта под видео и описание ключевых моментов в текстовом блоке. Для слайдеров с изображениями — осмысленные alt и кнопка «Пропустить слайд».


Результат: рейтинг доступности страницы в Lighthouse вырос с 72 до 96 баллов.

Готовы проверить свой продукт на доступность?

Подключите Glypha и получите автоматический аудит WCAG 2.1 AA для всего UI-кита — бесплатно, в течение 24 часов.

Запустить аудит Скачать полный чек-лист

Частые вопросы о доступности в Glypha

Какой уровень WCAG поддерживает Glypha по умолчанию?

Все 312 компонентов базового UI-кита соответствуют WCAG 2.1 уровня AA. Для уровня AAA доступны расширенные токены контраста и увеличенные зоны нажатия — они включаются отдельным пакетом.

Как добавить свой цвет, не нарушив контраст?

В редакторе токенов Glypha при добавлении нового цвета система сразу показывает коэффициент контраста со всеми существующими фонами. Если значение ниже 4.5:1 — появляется предупреждение и предложение ближайшего допустимого варианта.

Работают ли компоненты Glypha с NVDA и VoiceOver?

Да. Мы тестируем каждый релиз на NVDA (Windows), VoiceOver (macOS и iOS), JAWS и TalkBack (Android). Результаты публикуются в отчёте доступности на GitHub — последний аудит: февраль 2024, 0 критических замечаний.

Можно ли отключить анимации для пользователей?

Автоматически. Glypha уважает системную настройку prefers-reduced-motion. Дополнительно в настройках приложения доступен переключатель «Меньше движения», который отключает анимации на уровне CSS-переменной --g-motion-scale.

Как часто обновляется чек-лист доступности?

Раз в квартал, а также при выходе новых критериев WCAG. Актуальная версия всегда доступна в разделе «Ресурсы» и отправляется подписчикам рассылки Glypha. Последний обновлённый чек-лист — март 2024.