Как вы можете сделать это (но не должны) вы не можете использовать хак role="text"
, который мы часто используем в этом сценарии, тогда вам придется прибегнуть к добавлению отдельной текстовой версии, удобной для чтения с экрана, которая является визуально скрытой , а затем скрыть оригинальный текст, используя aria-hidden="true"
. Пример в конце моего ответа. Это связано с его собственными проблемами, потому что aria-hidden
не поддерживается на 100% всеми комбинациями браузеров и программ чтения с экрана (но поддержка хорошая), поэтому некоторые пользователи слышат это раздел дважды. На мой взгляд, это хуже, чем небольшая пауза между словами, но иногда клиенты не слушают причину, поэтому я понимаю, если вам в конечном итоге придется это сделать. Мои советы
Используйте взлом role="text"
, как предложил @ Quentin C, это стандартная практика в области доступности из-за определенных ограничений.
Либо это, либо оставьте это в покое, и примите тот факт, что если это Наихудшая проблема доступности на вашем сайте, никто не будет возражать против этого вообще. Использование aria-hidden
для правильного чтения не является хорошей практикой (во время написания они могут в конечном итоге реализовать это).
Просто чтобы вы знали Deque / Axe собирается добавить это как исключение кажется, так что это должно дать вам некоторую уверенность в том, что многие люди согласны с методом role="text"
.
Пример
.visually-hidden {
position: absolute !important;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
white-space: nowrap; /* added line */
}
<div aria-hidden="true">
<span>My special coffee is</span>
<b class="heading">Cappuccino</b>
<span>. I can drink it all day</span>
</div>
<p class="visually-hidden">My special coffee is Cappuccino. I can drink it all day</p>