Что такое a11y и почему это не ваша проблема — пока не станет
a11y — сокращение от «accessibility» (между первой и последней буквой 11 символов). Веб-доступность означает, что сайтом могут нормально пользоваться люди с ограниченными возможностями: нарушениями зрения, слуха, моторики, когнитивными особенностями.
По данным ВОЗ, в мире около 1,3 миллиарда людей с инвалидностью. В России — порядка 11 миллионов официально зарегистрированных. Это не маленькая аудитория, которую можно проигнорировать ради экономии бюджета.
Но дело не только в этом. Многие улучшения доступности помогают вообще всем:
- Субтитры к видео смотрят не только глухие, но и те, кто в метро без наушников
- Высокий контраст текста удобен при ярком солнце на улице
- Клавиатурная навигация нужна не только людям с нарушениями моторики, но и всем, кто привык к горячим клавишам
Четыре принципа WCAG — что за стандарт и почему он важен
WCAG (Web Content Accessibility Guidelines) — международный стандарт доступности веб-контента от W3C. Текущая стабильная версия — 2.2.
Стандарт строится на четырёх принципах:
Perceivable (Воспринимаемый) — пользователь должен воспринимать весь контент. У каждого изображения — alt-текст, у видео — субтитры.
Operable (Управляемый) — интерфейс работает с клавиатуры, нет ловушек фокуса, контент не мигает слишком быстро (это может вызвать приступы у людей с фотосенситивной эпилепсией).
Understandable (Понятный) — язык страницы указан, ошибки в формах объяснены, поведение интерфейса предсказуемо.
Robust (Надёжный) — контент корректно работает со вспомогательными технологиями: скринридерами, брайлевскими дисплеями, альтернативными указателями.
У каждого принципа три уровня: A (минимальный), AA (рекомендуемый), AAA (расширенный). Большинство компаний ориентируется на AA.
Реальные проблемы, которые встречаются на каждом втором сайте
Это не теоретические кейсы — вот что реально ломается.
Отсутствие alt у изображений. Скринридер зачитывает «img_2847394.png». Пользователь не понимает, что на картинке. Лечится одной строкой: alt="Фотография офиса компании в центре Москвы". Декоративные изображения — пустой alt: alt="", чтобы скринридер их пропускал.
Плохой контраст текста. WCAG требует соотношение контраста минимум 4.5:1 для обычного текста и 3:1 для крупного (от 18pt). Серый текст на белом фоне — классика провала. Проверить легко: инструмент Contrast Checker от WebAIM покажет точное соотношение.
Формы без связанных лейблов. Placeholder в поле ввода — это не замена <label>. Когда пользователь начинает вводить текст, placeholder исчезает. Правильно: <label for="email">Email</label><input id="email" type="email">.
Кнопки без текста. Иконка корзины без текстового описания — загадка для скринридера. Добавьте aria-label="Удалить товар из корзины" или скрытый текст через CSS-класс .visually-hidden.
Фокус при клавиатурной навигации исчезает. Дизайнер убрал outline через outline: none — «некрасиво». В итоге пользователь с клавиатурой не видит, где находится. Вместо удаления — заменяйте: outline: 2px solid #0066cc; outline-offset: 2px.
Скачущий порядок вкладок. При нажатии Tab фокус должен идти логично — сверху вниз, слева направо. Если порядок ломается из-за CSS или JS, это дезориентирует.
Семантическая вёрстка — основа основ
Самое дешёвое и эффективное вложение в доступность — правильная семантика HTML. Скринридеры ориентируются по структуре документа, и если вся страница сделана из <div> и <span>, у них нет шансов.
Заголовки. Иерархия <h1> → <h2> → <h3> должна отражать структуру контента, а не размер шрифта. На странице один <h1>, в нём — тема страницы. Не делайте <h2> заголовком только потому, что хочется крупный текст.
Ориентиры (landmarks). Используйте семантические теги: <header>, <nav>, <main>, <aside>, <footer>. Пользователи скринридеров прыгают между ориентирами, чтобы не слушать весь контент подряд.
Списки. Набор ссылок в меню — это список. Используйте <ul> и <li>, а не кучку <div>.
Кнопки и ссылки. Кнопка — для действия (отправить, удалить, открыть). Ссылка — для перехода. Не делайте <div onclick="..."> вместо <button>. Кнопки по умолчанию активируются с клавиатуры, div — нет.
ARIA — когда HTML не хватает
ARIA (Accessible Rich Internet Applications) — набор атрибутов, которые расширяют семантику HTML для сложных интерфейсов.
Главное правило: используйте ARIA только там, где нативный HTML не справляется. Первое правило W3C буквально гласит: «Не используйте ARIA, если можно использовать нативный элемент HTML».
Когда ARIA реально нужна:
- Кастомные компоненты: аккордеоны, табы, модальные окна, дропдауны
- Динамически обновляемый контент:
aria-live="polite" для уведомлений
- Иконочные кнопки без видимого текста:
aria-label="Закрыть"
- Состояния:
aria-expanded="true/false", aria-checked, aria-disabled
Пример модального окна:
<div role="dialog" aria-modal="true" aria-labelledby="modal-title">
<h2 id="modal-title">Подтверждение удаления</h2>
<p>Вы уверены, что хотите удалить этот файл?</p>
<button>Удалить</button>
<button>Отмена</button>
</div>
При открытии модального окна фокус должен перемещаться внутрь него. При закрытии — возвращаться на элемент, который его открыл.
Цвет — не единственный способ передать информацию
Около 8% мужчин и 0,5% женщин имеют то или иное нарушение цветовосприятия. Самый распространённый вариант — неразличение красного и зелёного.
Если вы показываете ошибку только красным цветом, часть пользователей её просто не заметит. Добавьте иконку, текстовое сообщение или изменение формы элемента.
То же с графиками: не полагайтесь только на цвет для различения категорий — используйте паттерны, подписи, форму маркеров.
Симулятор цветовой слепоты встроен в Chrome DevTools: Rendering → Emulate vision deficiencies.
Мобильная доступность
На мобильных устройствах свои требования.
Размер цели касания. WCAG 2.5.5 рекомендует минимум 44×44px для интерактивных элементов. Маленькие кнопки рядом друг с другом — источник постоянных промахов.
Жесты. Если функция доступна только через свайп или сложный жест, она должна дублироваться простым нажатием.
Масштабирование. Не блокируйте зум через user-scalable=no в мета-теге viewport. Пользователи со слабым зрением масштабируют страницу — не лишайте их этой возможности.
VoiceOver и TalkBack. Протестируйте ключевые сценарии на iOS (VoiceOver) и Android (TalkBack). Это займёт час, но покажет реальные проблемы, которые автоматические проверки пропустят.
Инструменты для проверки доступности
axe DevTools (расширение для Chrome/Firefox) — самый популярный инструмент. Находит нарушения WCAG прямо в браузере, объясняет проблему и указывает, как исправить. Бесплатная версия покрывает большинство нужд.
Lighthouse (встроен в Chrome DevTools) — даёт оценку доступности от 0 до 100. Удобно для первичного аудита.
NVDA (бесплатный скринридер для Windows) и VoiceOver (встроен в macOS и iOS) — для ручного тестирования. Автоматические инструменты находят около 30% проблем доступности. Остальное ловится только руками.
WebAIM Contrast Checker — проверка контраста по HEX-значениям.
Accessibility Insights от Microsoft — расширение с пошаговыми руководствами по тестированию.
Важное замечание: автоматика хорошо находит технические нарушения — отсутствие alt, неверную иерархию заголовков. Но не может оценить, насколько понятны инструкции или удобно взаимодействие.
Почему это выгодно бизнесу — не только этика
SEO. Alt-тексты помогают Google понять изображения. Правильная структура заголовков лучше индексируется. Семантическая вёрстка читается парсерами. Это не побочный эффект — это прямое пересечение интересов.
Юридические риски. В США компании судятся за недоступные сайты сотнями в год (Domino's Pizza дошла до Верховного суда). В России для государственных ресурсов требования к доступности обязательны по ГОСТ Р 52872. Крупный бизнес учитывает это при работе с госзаказчиками.
Аудитория. 11 миллионов людей с инвалидностью в России — это рынок. Добавьте пожилых пользователей, людей в ситуативных ограничениях: сломанная рука, яркое солнце, шумное место. По оценкам Click-Away Pound, британские компании ежегодно теряют £17 миллиардов из-за недоступных сайтов.
Качество кода. Сайт с хорошей доступностью, как правило, лучше структурирован, легче тестируется и поддерживается.
Как начать — без боли и лишних затрат
Если у вас уже есть сайт и вы хотите улучшить доступность, не нужно переделывать всё с нуля.
- Запустите axe DevTools или Lighthouse. Начните с критических ошибок.
- Добавьте alt-тексты ко всем значимым изображениям. Декоративным — пустой alt.
- Проверьте контраст на главных страницах. Серый на белом, светло-жёлтый на белом — типичные провалы.
- Пройдитесь по форме с клавиатурой. Tab, Shift+Tab, Enter, Space. Можете заполнить форму без мыши?
- Проверьте viewport.
user-scalable=no нигде не должно стоять.
- Добавьте lang к
<html>. <html lang="ru"> — секунда работы, но важно для скринридеров.
Если вы на этапе разработки нового сайта — это лучший момент закладывать доступность с нуля. Ретрофитить всегда дороже. В REEXY при разработке корпоративных сайтов и интернет-магазинов можно сразу договориться о проверке доступности на уровне вёрстки — это дешевле, чем исправлять потом.
Что делать с контентом
Доступность — это не только технические вещи.
Описание ссылок. «Нажмите здесь» — плохо. «Скачать прайс-лист в PDF» — хорошо. Пользователи скринридеров часто слушают список ссылок на странице вырванными из контекста.
Субтитры и транскрипты. Есть видео — добавьте субтитры. Есть аудио — транскрипт. YouTube генерирует субтитры автоматически с погрешностями, но это лучше, чем ничего.
Мигающий контент. Контент, который мигает более трёх раз в секунду, может вызвать приступ у людей с фотосенситивной эпилепсией. Проверяйте анимации и рекламные блоки.
Простой язык. WCAG AAA рекомендует читаемость на уровне средней школы для основного контента. Не «писать примитивно» — избегать ненужного усложнения.
Тест с закрытыми глазами
Один из лучших способов понять проблемы доступности — включить VoiceOver на Mac или NVDA на Windows и пройти ключевой сценарий вашего сайта с закрытыми глазами.
Например: найти нужный товар, добавить в корзину, оформить заказ.
После пяти минут такого теста становится понятно, почему «просто добавить alt» — это только начало. Порядок чтения, объявления о динамическом контенте, управление фокусом, понятные названия кнопок — всё это складывается в реальный пользовательский опыт.
Доступный сайт — это не сайт с зелёной галочкой в Lighthouse. Это сайт, которым реально можно пользоваться.