#accessibility #axedevtools
Вопрос:
Какой подходящий атрибут ARIA следует использовать для тега привязки без href?
<a class="no-underline h-100" aria-label="Fund Balance" id="card0">
......
</a>
Это помечается при работе с axe DevTools, но w3.org предполагает, что я смогу использовать любые атрибуты aria.
Глобальные атрибуты aria-* и любые атрибуты aria -*, применимые к разрешенным ролям.
https://www.w3.org/TR/html-aria/#docconformance
Любая помощь в этом будет весьма признательна.
Спасибо.
Комментарии:
1. Зачем вы используете
<a>
, если у него нет href ? Я предполагаю, что с очень небольшим количеством информации, которую вы здесь предоставляете, это<a>
принципиально не подходящий элемент для использования. Если вы приведете больше контекста, мы, безусловно, сможем сказать вам, что может быть хорошей заменой. Помните, что первое правило АРИИ-не используйте ее, если вам действительно этого не нужно.2. Пожалуйста, обратите внимание, что, согласно MDN, привязка без
href
атрибута не имеет неявной роли (это означает, что она не получает значенияrole
"link"
. Кроме того, из связанного проекта W3C ARIA : «Если нажатие на ссылку запускает действие, но не изменяет фокус браузера или расположение страницы, авторам рекомендуется рассмотреть возможность использованияbutton
роли вместоlink
роли». Короче говоря,<button/>
в этом случае может быть лучше использовать элемент a…3. Технически, axe ошибается. Как отметил @AlexanderNied, an
<a>
без anhref
не играет никакой роли. Это все равно, что иметь<span>
. A<span>
разрешено иметьaria-label
(хотя это, скорее всего, будет проигнорировано, см. Третий последний пункт на w3.org/TR/using-aria/#label-support ). Таким образом, an<a>
без anhref
разрешено иметь anaria-label
, но это может быть проигнорировано, как<span>
и . Если вы хотите заткнуть топор, вы можете добавитьrole="link"
в свой<a>
. (Вам, вероятноtabindex="0"
, тоже нужно добавить, если вы хотите, чтобы пользователь переходил по вашей ссылке.)4. В реальном мире примером использования
<a>
без href будет список ссылок, который включает «заблокированный» контент, т. Е. вы должны сначала посетить ссылки A и B, прежде чем ссылка C получит своеhref
значение, тем самым получив роль ссылки. Я понимаю, что нулевая ссылка предпочтительнее, чем использоватьdisabled
илиaria-disabled
в этом случае, потому что ссылка просто ожидает разблокировки или предоставления доступа, а не фактического отключения. Возможно, это различие слишком мало, чтобы быть важным, но вариант использования достаточно реален.
Ответ №1:
Это зависит от того, что вы пытаетесь сделать с тегом привязки.
Если в теге привязки отсутствует допустимый href
атрибут, средство чтения с экрана не интерпретирует его как метку привязки. Он также не включен в порядок вкладок на странице, поэтому он недоступен с клавиатуры.
Если вы хотите, чтобы программа чтения с экрана интерпретировала ваш элемент как тег привязки без использования href, вы можете явно добавить role="link"
, а также прекратить использование вкладки tabindex="0"
. Но, как отмечали другие, неясно, почему вы хотите использовать тег привязки, если он ни на что не ссылается — возможно, вам следует рассмотреть возможность использования другого элемента.
В противном случае просто добавьте допустимый href
атрибут, например, href="#"
который сделает ссылку видимой для читателей экрана и сделает клавиатуру ссылки доступной.