Воспринимаемость (Perceivable)
Контраст текста — минимум 4.5:1 для обычного и 3:1 для крупного шрифта (критерий 1.4.3). В Glypha базовая пара --g-text-main на --g-bg даёт 15.9:1. Все альтернативные тексты прописаны в токенах.
Как мы встраиваем стандарты WCAG 2.1 в каждый компонент дизайн-системы — от контраста текста до работы со скринридерами. Практическое руководство для дизайнеров и разработчиков.
Доступный продукт не «чинят» в конце спринта. Его проектируют с первого токена. В Glypha доступность зашита в саму структуру системы: токены, компоненты, состояния и документация.
В этом гиде мы разберём четыре темы: как мы интерпретируем стандарты WCAG 2.1, что именно делает Glypha за вас, по какому чек-листу тестировать каждый экран и как правильно готовиться к работе со скринридерами.
Материал основан на опыте реальных проектов: мы адаптировали дизайн-систему финтех-приложения «Атлас Банк» и SaaS-платформу для HR «Команда» под требования WCAG 2.1 уровня AA. Ниже — конкретные цифры и приёмы, которые сработали.
WCAG — это не чек-лист из 50 пунктов, а четыре принципа. Разберём каждый и покажем, как он ложится на конкретные компоненты Glypha.
Контраст текста — минимум 4.5:1 для обычного и 3:1 для крупного шрифта (критерий 1.4.3). В Glypha базовая пара --g-text-main на --g-bg даёт 15.9:1. Все альтернативные тексты прописаны в токенах.
Каждый интерактивный элемент должен быть достижим с клавиатуры (критерий 2.1.1). Мы добавили видимое состояние фокуса — 2px-обводку с отступом — на все кнопки, ссылки и поля. Никаких «ловушек» при переключении по Tab.
Языки интерфейса объявлены атрибутом lang="ru", заголовки выстроены в логическую иерархию (h1 → h2 → h3), а ошибки валидации форм связываются с полями через aria-describedby.
Код совместим со вспомогательными технологиями: мы используем семантические HTML-теги, избегаем кастомных ARIA-паттернов там, где есть нативные аналоги, и тестируем на NVDA, VoiceOver и JAWS.
Доступность в Glypha — это не «дополнительный режим». Это базовые свойства системы, которые работают по умолчанию.
Все пары «текст/фон» в палитре Glypha проходят автоматическую проверку на соответствие WCAG AA при сборке. Если дизайнер добавляет новый цвет, система сразу подсказывает, не нарушает ли он порог 4.5:1.
Кнопки, поля, ссылки и карточки из UI-кита уже содержат стили для :focus-visible. Минимальная зона нажатия — 44×44 px согласно рекомендации 2.5.8.
Базовый размер шрифта — 16px, заголовки масштабируются через clamp(). Пользователи могут увеличить размер текста в браузере до 200% без потери вёрстки.
Компоненты формы (Input, Select, Checkbox, Radio) генерируют корректные пары <label> и aria-*. Модальные окна корректно «перехватывают» фокус и возвращают его при закрытии.
Все анимации и переходы автоматически отключаются, если пользователь включил «сокращённые движения» в настройках ОС. Это критично для людей с вестибулярными нарушениями.
Интеграция с axe-core и Lighthouse позволяет запускать аудит доступности на каждом коммите. Средняя длительность проверки — 38 секунд на полный UI-кит из 312 компонентов.
Пользуйтесь этим списком перед каждым релизом. Он охватывает восемь групп проверок — от визуального контраста до работы с клавиатурой.
Проверьте контраст: текст на фоне ≥ 4.5:1, крупный текст ≥ 3:1, UI-элементы и иконки ≥ 3:1. Не полагайтесь только на цвет — добавляйте текстовые подсказки.
Каждый кликабельный элемент — минимум 44×44 px. Расстояние между соседними интерактивными объектами — не менее 8px.
Пройдите весь экран только по Tab / Shift+Tab. Логика должна быть предсказуемой, без «слепых» зон. Escape закрывает модальные окна и дропдауны.
Информационные изображения — с осмысленным alt. Декоративные — с alt="". Иконки с текстом — с aria-hidden.
Один h1 на страницу, последовательная иерархия без пропусков уровней. Разделы навигации и контента — в семантических тегах <main>, <nav>, <article>.
Каждое поле связано с <label>. Ошибки объявляются через aria-invalid и aria-describedby. Обязательные поля помечены явно.
Обновления через AJAX объявляются через aria-live="polite" или assertive. Тосты и уведомления не пропадают без предупреждения.
Проверьте поведение при prefers-reduced-motion: reduce. Параллакс, автопрокрутка и мигающие элементы ≥ 3 раза/сек — отключены.
Ниже — три реальных сценария, где мы дорабатывали компоненты Glypha после тестирования с NVDA, VoiceOver и JAWS.
Проблема: NVDA читала ячейки без привязки к заголовкам столбцов — пользователь не понимал, какой именно показатель описывается.
Решение: добавили scope="col" и scope="row" на заголовки, а для сложных ячеек — headers. После изменения VoiceOver на iOS корректно читает «Сумма, 12 марта: 4 500 рублей».
Результат: время самостоятельного чтения одной строки снизилось с 11 до 4 секунд.
Проблема: JAWS пропускал динамически обновляющиеся карточки метрик — пользователь с нарушением зрения не видел изменения KPI в реальном времени.
Решение: обернули контейнер карточек в role="region" aria-live="polite" и добавили скрытый заголовок aria-label="Обновлённые метрики за 5 минут". Теперь NVDA произносит изменения через 2 секунды после обновления.
Результат: доля пользователей со скринридерами, завершивших онбординг, выросла с 41% до 78%.
Проблема: видео с демонстрацией компонентов не было доступно для незрячих — отсутствовали субтитры и текстовый эквивалент.
Решение: добавили автоматические и ручные субтитры, расшифровку в виде транскрипта под видео и описание ключевых моментов в текстовом блоке. Для слайдеров с изображениями — осмысленные alt и кнопка «Пропустить слайд».
Результат: рейтинг доступности страницы в Lighthouse вырос с 72 до 96 баллов.
Подключите Glypha и получите автоматический аудит WCAG 2.1 AA для всего UI-кита — бесплатно, в течение 24 часов.
Все 312 компонентов базового UI-кита соответствуют WCAG 2.1 уровня AA. Для уровня AAA доступны расширенные токены контраста и увеличенные зоны нажатия — они включаются отдельным пакетом.
В редакторе токенов Glypha при добавлении нового цвета система сразу показывает коэффициент контраста со всеми существующими фонами. Если значение ниже 4.5:1 — появляется предупреждение и предложение ближайшего допустимого варианта.
Да. Мы тестируем каждый релиз на NVDA (Windows), VoiceOver (macOS и iOS), JAWS и TalkBack (Android). Результаты публикуются в отчёте доступности на GitHub — последний аудит: февраль 2024, 0 критических замечаний.
Автоматически. Glypha уважает системную настройку prefers-reduced-motion. Дополнительно в настройках приложения доступен переключатель «Меньше движения», который отключает анимации на уровне CSS-переменной --g-motion-scale.
Раз в квартал, а также при выходе новых критериев WCAG. Актуальная версия всегда доступна в разделе «Ресурсы» и отправляется подписчикам рассылки Glypha. Последний обновлённый чек-лист — март 2024.