Кратко
СкопированоГлобальное свойство из WAI-ARIA для описания ролей элементов своими словами.
Атрибут влияет только на то, как скринридер прочитает роль. Он не изменяет функциональность элемента.
Пример
Скопировано<section class="slide" aria-roledescription="Слайд" aria-labelledby="heading"> <h1 id="heading">Инкунабулы</h1> <ul> <li> От латинского слова <i>incunabula</i> — «колыбель»,«начало» </li> <li> Европейские книги, изданные от 1440 до 1 января 1501 года </li> <li> Термин появился в 1639 году, но стал активно употребляться только в 18 веке </li> <li> Известные инкунабулы — Библия Гутенберга (первая половина 1450-х) и «Нюрнбергская хроника» (1493) </li> </ul> <div class="number">10</div></section>
<section class="slide" aria-roledescription="Слайд" aria-labelledby="heading" > <h1 id="heading">Инкунабулы</h1> <ul> <li> От латинского слова <i>incunabula</i> — «колыбель»,«начало» </li> <li> Европейские книги, изданные от 1440 до 1 января 1501 года </li> <li> Термин появился в 1639 году, но стал активно употребляться только в 18 веке </li> <li> Известные инкунабулы — Библия Гутенберга (первая половина 1450-х) и «Нюрнбергская хроника» (1493) </li> </ul> <div class="number">10</div> </section>
Скринридер прочитает эту разметку примерно так: «Инкунабулы, слайд».
Как пишется
СкопированоЗадайте тегу aria
с нужным названием роли в виде строки текста. Атрибут можно использовать почти для всех тегов и ARIA-ролей, кроме <div>
и <span>
без явных ролей или тегов с явной ролью generic
.
<!-- ⛔ Лучше так не делать --><span aria-roledescription="Хештег"> #дизайн</span>
<!-- ⛔ Лучше так не делать --> <span aria-roledescription="Хештег"> #дизайн </span>
Не оставляйте aria
с пустым значением или с пробелом.
Иногда скринридеры не переводят название ролей с английского на основной язык интерфейса, а ещё роли в каком-то контексте могут быть не понятны пользователям. С помощью aria
можно изменить, как скринридер прочитает роль.
Подходящие ситуации для использования aria
:
- уточнение функциональности элементов с групповыми ролями —
group
,region
и другими; - более точное описание ролей некоторых интерактивных элементов.
Используйте атрибут тогда, когда это действительно нужно. Если перепутаете роли или придумаете для них нестандартные названия, это только запутает пользователей. Стандартные названия встроенных ролей тегов привычнее и понятнее.
Как понять
СкопированоРоль — это основная функция элемента. Благодаря ей пользователи вспомогательных технологий понимают, что делает элемент.
Подсказки
Скопировано💡 aria
не подходит для описания элемента. Используйте aria
или aria
, если нужно описать подробнее, для чего нужен элемент.
💡 Когда поддерживаете несколько языков, не забудьте перевести содержимое атрибута aria
на них.
На практике
Скопированосоветует Скопировано
🛠 Не все вспомогательные технологии хорошо поддерживают aria
. В JAWS 2020 и JAWS 2021 есть баг, из-за которого этот скринридер не читает роли элементов в контейнере с aria
.
Возьмём такую разметку карточки:
<div role="group" aria-roledescription="Карточка"> <a href="https://www.myblog.com/posts/capybara/"> Мой первый пост про капибар </a></div>
<div role="group" aria-roledescription="Карточка" > <a href="https://www.myblog.com/posts/capybara/"> Мой первый пост про капибар </a> </div>
В этом случае JAWS в режиме виртуального курсора при фокусе на ссылке скажет: «Мой первый пост про капибар, карточка». То есть, роли дочерних элементов в теге с aria
перезаписываются, хотя не должны.