Цифровая доступность — не опция, а необходимость. По данным ВОЗ, около 15 % населения планеты имеют те или иные формы инвалидности. Сайт, не адаптированный для людей с ограниченными возможностями здоровья (ОВЗ), исключает значительную часть аудитории. Разберём ключевые принципы и практические решения.
Почему доступность важна
1. Контрастность текста: правила и инструменты
Проблема: низкий контраст делает текст нечитаемым для людей с ослабленным зрением.
Требования WCAG 2.1 (уровень AA):
Как проверить:
Практические советы:
2. Клавиатурная навигация: без мыши — всё работает
Проблема: многие пользователи с моторными нарушениями не могут использовать мышь.
Что проверить:
Технические решения:
3. ARIA‑метки: семантика для скринридеров
Проблема: скринридеры (программы для озвучивания контента) не всегда понимают назначение динамических элементов.
Ключевые ARIA‑атрибуты:
Примеры:
<button aria-label="Закрыть модальное окно">
<svg>...</svg>
</button>
<div role="alert" aria-live="assertive">
Ошибка: поле «Email» заполнено неверно.
</div>
Важно: ARIA — дополнение к семантическому HTML, а не замена. Используйте стандартные теги (<nav>, <header>), где это возможно.
4. Альтернативные описания изображений (alt‑текст)
Проблема: изображения без описаний недоступны для незрячих пользователей.
Правила написания alt‑текста:
Примеры:
Для сложных изображений (графики, диаграммы):
Дополнительные меры доступности
Масштабируемость текста
Управление временем
Аудио и видео
Формы
Цветовая слепота
Как проверить доступность
Автоматизированные инструменты:
Ручное тестирование:
Пользовательские тесты:
Типичные ошибки
Вывод
Доступность — это:
С чего начать:
Помните: доступность — не разовая задача, а постоянный процесс. Регулярно тестируйте, улучшайте и прислушивайтесь к обратной связи пользователей.
Почему доступность важна
- Юридическая обязанность: во многих странах (США, ЕС, РФ) действуют законы о цифровой доступности (например, WCAG, ADA, ФЗ‑419).
- Расширение аудитории: доступ к сервису получают люди с нарушениями зрения, слуха, моторики, когнитивными особенностями.
- Улучшение UX для всех: чёткая структура и контрастность полезны и для пользователей без ОВЗ.
- Репутация бренда: демонстрация социальной ответственности.
- SEO‑выгоды: семантически правильная разметка улучшает индексацию.
1. Контрастность текста: правила и инструменты
Проблема: низкий контраст делает текст нечитаемым для людей с ослабленным зрением.
Требования WCAG 2.1 (уровень AA):
- основной текст — контраст не менее 4.5 : 1;
- крупный текст (18 pt+ или 14 pt+ полужирный) — контраст не менее 3 : 1.
Как проверить:
- WebAIM Contrast Checker — вводите HEX‑коды цветов, получаете оценку.
- Colorable — визуализирует контраст в реальном времени.
- Lighthouse (Chrome DevTools) — автоматический аудит.
Практические советы:
- избегайте светло‑серого текста на белом фоне (#767676 на #FFFFFF — контраст 4.2 : 1, не проходит AA);
- для заголовков используйте насыщенные оттенки (например, #212529);
- тестируйте контрастность в тёмном режиме.
2. Клавиатурная навигация: без мыши — всё работает
Проблема: многие пользователи с моторными нарушениями не могут использовать мышь.
Что проверить:
- все интерактивные элементы (кнопки, ссылки, формы) доступны через Tab;
- порядок фокусировки логичен (слева направо, сверху вниз);
- видимый индикатор фокуса (например, синяя рамка) не убран CSS‑стилями;
- есть возможность выйти из циклических меню (например, аккордеонов).
Технические решения:
- используйте семантические HTML‑теги (<button>, <a>, <input>);
- добавьте tabindex="0" для кастомных интерактивных элементов;
- реализуйте Skip Navigation (ссылка «Перейти к контенту» в начале страницы);
- для сложных компонентов (табы, модальные окна) применяйте WAI‑ARIA (роли, состояния).
3. ARIA‑метки: семантика для скринридеров
Проблема: скринридеры (программы для озвучивания контента) не всегда понимают назначение динамических элементов.
Ключевые ARIA‑атрибуты:
- role — определяет тип элемента (например, role="navigation" для меню);
- aria-label — скрытая подпись (например, для иконок без текста);
- aria-labelledby — связывает элемент с видимой меткой;
- aria-describedby — добавляет подробное описание;
- aria-hidden="true" — скрывает элемент от скринридера (но не от визуала).
Примеры:
<button aria-label="Закрыть модальное окно">
<svg>...</svg>
</button>
<div role="alert" aria-live="assertive">
Ошибка: поле «Email» заполнено неверно.
</div>
Важно: ARIA — дополнение к семантическому HTML, а не замена. Используйте стандартные теги (<nav>, <header>), где это возможно.
4. Альтернативные описания изображений (alt‑текст)
Проблема: изображения без описаний недоступны для незрячих пользователей.
Правила написания alt‑текста:
- Краткость: 5–15 слов.
- Смысл: что изображено и зачем оно здесь?
- Контекст: если картинка — ссылка, опишите действие (например, «Перейти в каталог»).
- Исключения: декоративные элементы — alt="".
Примеры:
- ✅ <img src="product.jpg" alt="Смартфон XYZ, чёрный, с двойной камерой">
- ❌ <img src="decor.png" alt="Красивый узор"> (если это декор — alt="")
- ✅ <a href="/cart"><img src="cart-icon.png" alt="Перейти в корзину"></a>
Для сложных изображений (графики, диаграммы):
- используйте aria-describedby для ссылки на текстовое описание;
- размещайте описание рядом с картинкой (скрытое для визуала, но доступное для скринридера).
Дополнительные меры доступности
Масштабируемость текста
- обеспечьте увеличение шрифта до 200 % без потери функциональности;
- используйте относительные единицы (em, rem) вместо px.
Управление временем
- не ставьте таймеры менее 20 секунд без возможности паузы;
- для каруселей добавьте кнопки «Стоп/Старт».
Аудио и видео
- субтитры для видео;
- транскрипция аудиоконтента;
- возможность отключения звука.
Формы
- явные метки (<label>) для каждого поля;
- сообщения об ошибках рядом с полем;
- подсказки (например, формат даты).
Цветовая слепота
- избегайте пар «красный/зелёный» для критических сигналов;
- добавляйте текстовые индикаторы (иконки, подписи);
- тестируйте через симулятор цветовой слепоты (например, Color Oracle).
Как проверить доступность
Автоматизированные инструменты:
- Lighthouse (в Chrome DevTools) — базовый аудит;
- Wave — визуализация проблем;
- Axe — расширенный анализ.
Ручное тестирование:
- навигация только клавиатурой (Tab, Enter, стрелки);
- проверка скринридером (NVDA, VoiceOver);
- тестирование с увеличением масштаба.
Пользовательские тесты:
- привлечение людей с ОВЗ для реальных сценариев;
- сбор обратной связи через формы или опросы.
Типичные ошибки
- Убранный фокус: outline: none без замены на видимый индикатор.
- Пустые alt‑тексты для значимых изображений.
- Недоступные кастомные элементы (например, кнопки на <div>).
- Низкий контраст в мелочах (подсказки, disabled‑элементы).
- Динамический контент без ARIA (уведомления, лоадеры).
Вывод
Доступность — это:
- инклюзивность: право каждого на доступ к информации;
- практичность: улучшение UX для широкой аудитории;
- ответственность: соблюдение законов и стандартов.
С чего начать:
- Проверьте контрастность ключевых элементов.
- Убедитесь, что сайт работает с клавиатурой.
- Добавьте alt‑тексты к изображениям.
- Внедрите базовые ARIA‑роли.
- Проведите аудит с помощью Lighthouse.
Помните: доступность — не разовая задача, а постоянный процесс. Регулярно тестируйте, улучшайте и прислушивайтесь к обратной связи пользователей.