Ярлыки и альтернативные тексты

Для того, чтобы программа чтения с экрана могла представить пользователю голосовой пользовательский интерфейс, значимые элементы должны иметь соответствующие метки или текстовые альтернативы. Метка или текстовая альтернатива дает элементу его доступное имя , одно из ключевых свойств для выражения семантики элемента в дереве доступности .

Когда имя элемента сочетается с ролью элемента, оно дает пользователю контекст, чтобы он мог понять, с каким типом элемента он взаимодействует и как он представлен на странице. Если имя отсутствует, то экранный диктор только объявляет роль элемента. Представьте себе, что вы пытаетесь перемещаться по странице и слышите «кнопка», «флажок», «изображение» без какого-либо дополнительного контекста. Вот почему маркировка и текстовые альтернативы имеют решающее значение для хорошего, доступного опыта.

Проверить имя элемента

Проверить доступное имя элемента легко с помощью DevTools в Chrome:

  1. Щелкните правой кнопкой мыши по элементу и выберите Inspect . Откроется панель DevTools Elements.
  2. На панели «Элементы» найдите панель «Доступность ». Она может быть скрыта за символом »
  3. В раскрывающемся списке «Вычисляемые свойства» найдите свойство «Имя» .
Панель специальных возможностей DevTools, отображающая вычисленное имя кнопки.

Независимо от того, смотрите ли вы на img с alt текстом или на input с label , все эти сценарии приводят к одному и тому же результату: присваиванию элементу его доступного имени.

Проверьте наличие отсутствующих имен

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

Маркируйте документы и рамки

Каждая страница должна иметь элемент title , который кратко объясняет, о чем эта страница. Элемент title дает странице ее доступное имя. Когда программа чтения с экрана заходит на страницу, это первый текст, который объявляется.

Например, страница ниже имеет заголовок «Рецепт быстрой выпечки кленового батончика от Мэри»:

<!doctype html>
  <html lang="en">
    <head>
      <title>Mary's Maple Bar Fast-Baking Recipe</title>
    </head>
  <body>
      </body>
</html>

Аналогично, любые элементы frame или iframe должны иметь атрибуты title :

<iframe title="An interactive map of San Francisco" src="…"></iframe>

В то время как содержимое iframe может содержать собственный внутренний элемент title , программа чтения с экрана обычно останавливается на границе фрейма и объявляет роль элемента — «фрейм» — и его доступное имя, предоставленное атрибутом title . Это позволяет пользователю решить, хочет ли он войти во фрейм или обойти его.

Включайте текстовые альтернативы для изображений и объектов

Атрибут img всегда должен сопровождаться атрибутом alt , чтобы дать изображению доступное имя. Если изображение не загружается, alt текст используется как заполнитель, чтобы пользователи имели представление о том, что изображение пыталось передать.

Написание хорошего alt текста — это своего рода искусство, но есть несколько рекомендаций, которым вы можете следовать:

  1. Определите, содержит ли изображение информацию, которую в противном случае было бы трудно получить, прочитав окружающий текст.
  2. Если да, передайте содержание как можно лаконичнее.

Если изображение служит лишь украшением и не несет никакой полезной информации, вы можете присвоить ему пустой атрибут alt="" , чтобы удалить его из дерева доступности.

Изображение, заключенное в ссылку, должно использовать атрибут alt объекта img для описания того, куда перейдет пользователь, если нажмет на ссылку:

<a href="https://en.wikipedia.org/wiki/Google">
  <img alt="Google's wikipedia page" src="google-logo.jpg">
</a>

Аналогично, если элемент <input type="image"> используется для создания кнопки изображения, он должен содержать alt текст, описывающий действие, которое происходит, когда пользователь нажимает на кнопку:

<form>
  <label>
    Username:
    <input type="text">
  </label>
  <input type="image" alt="Sign in" src="./sign-in-button.png">
</form>

Встроенные объекты

Элементы <object> , которые обычно используются для встраивания Flash, PDF или ActiveX, также должны содержать альтернативный текст. Подобно изображениям, этот текст отображается, если элемент не может быть отображен. Альтернативный текст помещается внутри элемента object как обычный текст, например, «Годовой отчет» ниже:

<object type="application/pdf" data="/report.pdf">
Annual report.
</object>

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

Кнопки

Элемент button всегда пытается вычислить свое доступное имя, используя текстовое содержимое. Для кнопок, которые не являются частью form , написание четкого действия в качестве текстового содержимого может быть всем, что вам нужно для создания хорошего доступного имени.

<button>Book Room</button>

Мобильная форма с кнопкой «Забронировать комнату».

Одним из распространенных исключений из этого правила являются кнопки-иконки. Кнопка-иконка может использовать изображение или шрифт-иконку для предоставления текстового содержимого кнопки. Например, кнопки, используемые в редакторе What You See Is What You Get (WYSIWYG) для форматирования текста, обычно представляют собой просто графические символы:

Кнопка со значком выравнивания по левому краю.

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

<button aria-label="Left align"></button>

Подобно кнопкам, ссылки в первую очередь получают свое доступное имя из своего текстового содержимого. Хороший трюк при создании ссылки — поместить наиболее значимый фрагмент текста в саму ссылку, а не слова-заполнители вроде «Здесь» или «Подробнее».

Недостаточно описательно
Check out our guide to web performance <a href="/https/web.developers.google.cn/guide">here</a>.
Полезный контент!
Check out <a href="/https/web.developers.google.cn/guide">our guide to web performance</a>.

Это особенно полезно для экранных ридеров, которые предлагают ярлыки для перечисления всех ссылок на странице. Если ссылки полны повторяющегося текста-заполнителя, эти ярлыки становятся гораздо менее полезными:

Меню ссылок VoiceOver заполнено словом «здесь».
Пример VoiceOver, программы чтения с экрана для macOS, демонстрирующей меню навигации по ссылкам.

Элементы формы этикетки

Существует два способа связать метку с элементом формы, например флажком. Любой из методов делает текст метки также целью щелчка для флажка, что также полезно для пользователей мыши или сенсорного экрана. Чтобы связать метку с элементом, выполните одно из следующих действий:

  • Поместите элемент ввода внутрь элемента метки.
<label>
  <input type="checkbox">Receive promotional offers?</input>
</label>
  • Или используйте атрибут метки for и ссылайтесь на id элемента
<input id="promo" type="checkbox"></input>
<label for="promo">Receive promotional offers?</label>

Если флажок отмечен правильно, программа чтения с экрана может сообщить, что элемент имеет роль флажка, находится в отмеченном состоянии и называется «Получать рекламные предложения?», как в примере VoiceOver ниже:

Текстовый вывод VoiceOver с сообщением «Получать рекламные предложения?»