Как адаптировать сайт для чтения скринридером. Введение в ARIA-атрибуты
easy

Как адаптировать сайт для чтения скринридером. Введение в ARIA-атрибуты

В помощь людям, которым трудно смотреть в экран

Недавно мы рассказали про скринридеры — специальные программы для чтения с экрана, которые помогают незрячим пользоваться компьютером. Вот основные мысли:

  • скринридер получает данные от программ и операционной системы и зачитывает пользователю всё, что ему нужно знать о происходящем на экране;
  • чтобы это работало, программа должна уметь отдавать скринридеру информацию о происходящем в ней;
  • браузеры умеют анализировать HTML-код, чтобы скринридеры могли озвучивать содержимое сайтов.

Проблема в том, что стандартной вёрстки сайтов недостаточно для скринридеров. Чтобы помочь слабовидящим лучше работать с сайтом, используют ARIA-атрибуты и придерживаются специальных правил разметки.

Что такое ARIA

ARIA — это стандарт разработки, который помогает делать сайты и приложения более доступными для людей с ограниченными возможностями. В вебе ARIA-атрибуты нужны для того, чтобы помочь скринридерам разобраться с контентом на сайте и озвучить его тем, кто плохо видит или не видит совсем.

Чтобы не добавлять новые теги, по этому стандарту используют ARIA-атрибуты тегов. Их поддерживают все современные браузеры. Идея в том, чтобы добавлять эти атрибуты к стандартным тегам — на внешний вид эти атрибуты не влияют, зато скринридерам сразу понятно, как работать с этим элементом.

Атрибут тега — это то, что пишется после названия и до закрывающей угловой скобки. Например, атрибут id отвечает за внутреннее название элемента:

<p id = "mainText"> </p>

Атрибутов у тега может быть много — один отвечает за имя, второй — за стили и так далее. Вот пример тега абзаца, у которого сразу три атрибута:

<p id = "mainText" style="color: red;" class="loader"> </p>

Большинство ARIA-атрибутов начинаются со слова «aria-», но есть и исключения.

Примеры ARIA-атрибутов

В официальном стандарте ARIA описаны десятки атрибутов, с помощью которых можно решить практически любые задачи. Вот некоторые из них.

aria-label. Если на нашем сайте меню сделано с помощью иконок, а не текста, скринридер может их не прочитать.

Атрибут aria-label позволяет добавить невидимую подпись любому элементу — она не появится на экране, зато скринридер легко прочитает, что там написано.

<img src="send.jpg" aria-label="Отправить письмо">

aria-keyshortcuts. Некоторые элементы интерфейса могут быть привязаны к горячим клавишам. Чтобы скринридер мог сообщить пользователю, что у текущего элемента есть своя горячая клавиша для быстрого перехода или активации, используют атрибут aria-keyshortcuts. В нём указывают сочетания клавиш без дополнительных пояснений, чтобы скринридер мог их правильно озвучить:

<button aria-keyshortcuts="Control+Alt+.">Кнопка</button>

aria-disabled. Когда пользователь на странице нажимает клавишу Tab, он по очереди переключается между интерактивными элементами — кнопками, ссылками, пунктами меню, полями ввода и так далее. Но если кнопка сейчас недоступна для нажатия, скринридер её пропустит. Такое бывает, когда мы, например, не заполнили форму ввода — кнопка станет активной только после заполнения всех полей.

Если мы добавим свойство aria-disabled такой кнопке, то скринридер её увидит и тоже сможет озвучить, добавив, что нажать на неё пока нельзя. Это нужно для того, чтобы пользователь понял — кнопка на странице есть, но пользоваться ей пока не получится.

<button aria-disabled="true">Подписаться</button>

aria-required. Когда мы создаём, например, форму подписки, у нас есть обязательные поля — имя и адрес электронной почты. Мы привыкли, что обязательные поля помечаются звёздочкой, но при чтении иногда это бывает неочевидно.

Если мы хотим сообщить скринридеру, что перед ним — обязательное поле, то к нему добавляется атрибут aria-required:

<input type="password" name="pass" aria-required="true">

Роли

Кроме прямых атрибутов, в ARIA-стандарте есть роли — они сообщают скринридеру, что делает этот элемент и для чего он нужен. Например, если мы добавим элементу роль и укажем, что это чекбокс, то скринридер сможет сообщить пользователю, отмечен он или нет.

Всего есть шесть ролей: 

  • роли виджетов — показывает, что перед нами интерактивный элемент, с которым можно что-то делать: меню, список, вкладки, сетки, кнопки, поля ввода и так далее;
  • роли структуры документа — описывают структуру страницы и из чего он состоит;
  • роли ориентиров — нужны для навигации по странице;
  • роли «живых» областей — тех, где есть динамический контент: логи, таймеры, алерты;
  • роли окон — для обозначения диалоговых и всплывающих окон;
  • абстрактные роли — те, что не подходят под предыдущие категории.

Каждая роль задаётся с помощью атрибута role="", а в кавычках пишется значение роли. Примеры ролей:

  • menu — говорит, что перед нами меню, в котором что-то есть.
  • button — кнопка. Дело в том, что с помощью современной вёрстки на дивах можно сделать кнопку, не используя тег <button>, и скринридер не сможет её правильно обработать. Роль решает эту проблему и сообщает скринридеру, что этот элемент — кнопка.
  • listitem — элемент списка.
  • search — поле для поиска.
  • alert — область с важной информацией.
  • sectionhead — название раздела.

Правила разметки

Чтобы сделать сайт доступнее, кроме атрибутов ARIA нужно правильно применять базовые правила разметки страницы:

  • делать вложенную иерархию заголовков;
  • подписывать картинки и значимые элементы интерфейса;
  • пользоваться полным набором тегов для создания списков и таблиц — например, некоторые скринридеры плохо работают с таблицами, у которых нет тега <thead>;
  • использовать семантические теги разметки.

В итоге, если соблюдать все эти правила, у нас получится сайт, которым будет удобно пользоваться всем — и со скринридером, и без него.

Что дальше

В следующий раз займёмся практикой — адаптируем сайт для чтения с экрана и сравним его поведение в скринридере с тем, что было раньше.

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
easy