Доступность в декоративных изображениях или повторяющихся информационных изображениях
Когда вы пишете alt, вы должны иметь в виду несколько вещей. Одна из этих вещей предлагает использовать пустой alt=""
когда содержимое изображения является декоративным или содержит повторяющуюся информацию.
Но какая разница между использованием:
<img alt=""
<img aria-hidden="true"
<img role="presentation"
Или все вместе?
<img alt="" aria-hidden="true" role="presentation" src="…" />
2 ответа
Короткий ответ:
Все они имеют разные цели. Атрибут image alt действителен только для элементов изображения. aria-hidden предназначен для элементов, которые скрыты для всех пользователей, а роль = презентация вроде пустого атрибута alt для всех элементов - не только для изображений (но имеет меньшую поддержку, чем пустое изображение alt).
Более длинный ответ:
Я бы предложил прочитать в документации эти атрибуты, чтобы понять, как их следует использовать. Каждый из них служит своей цели.
Атрибут alt:
Изображение alt text предназначено для передачи текстовой альтернативы нетекстовому контенту - если изображение не имеет альтернативного текста, программы чтения с экрана игнорируют его, предполагая, что оно чисто декоративное. Эта функция широко - если не универсально поддерживается.
ария-скрытый:
aria-hidden, как определено в w3c, предназначен для элементов, которые "не видны или не воспринимаются любым пользователем". Это означает, что если зрячий пользователь не может его видеть, он также должен быть скрыт от пользователей, получающих доступ к API доступности. Примером использования может быть случай, когда пользователю нужно нажать кнопку, чтобы отобразить раздел - этот раздел будет скрыт для всех пользователей, а также будет иметь атрибут "aria-hidden", который будет переключаться при изменении его видимости. Следует отметить, что он не всегда используется таким образом - многие люди просто используют его, чтобы скрыть от программ чтения с экрана, хотя это не является целью, определенной в W3C. Источник: https://www.w3.org/TR/wai-aria/states_and_properties
Роль = презентация:
роль = представление определяется в w3c как: "Элемент, неявная собственная семантика роли которого не будет отображаться в API доступности". Это похоже на пустой текст alt, хотя, в отличие от атрибута alt, его можно использовать с различными другими элементами, которые не должны отображаться в API доступности. По сути, он делает то же самое, что и пустой текст alt, но не так широко поддерживается, как пустой атрибут alt (sourece: https://www.w3.org/WAI/tutorials/images/decorative/).
Определение w3c: https://www.w3.org/TR/wai-aria/roles
Почему бы не включить все 3?
Чтобы ответить на ваш последний вопрос, самая большая причина не включать все три в том, что это полное излишество. С пустым атрибутом alt элемент уже будет игнорироваться программами чтения с экрана. Один потенциальный недостаток, связанный с включением role=presentation и aria-hidden, заключается в том, что оба они удалят элемент из API специальных возможностей, что может иметь негативные последствия для пользователей, использующих API с инструментами, которые не являются программами чтения с экрана.
Когда alt
атрибут установлен в пустую строку
Изображение является либо декоративным, либо дополнением к остальному содержимому, избыточно с некоторой другой информацией в документе.
Вторая часть о резервировании важна, например:
<h1><img alt="" src="logo.gif" />My company name</h1>
Когда вы должны использовать role=presentation
Это тот случай, когда изображение является чисто декоративным, что означает, что вы должны использовать alt=""
в этом случае.
Вам не нужно указывать атрибут роли презентации для изображения с пустым alt
атрибут как стандартная реализация стандартных браузеров:
Допустимые значения атрибута роли ARIA:
presentation
только роль, дляimg
элемент которогоalt
значение атрибута пустое (alt=""
), иначе любое значение роли.
Когда вы должны использовать aria-hidden=true
Используйте его, если вы не хотите предоставлять информацию API доступности, но хотите предоставить ее обычным пользователям.
Зрячие люди могут использовать программу чтения с экрана (неграмотный, слабовидящий, ...), ее следует использовать с осторожностью. Для img
тег, это полезно только когда alt
не пусто
За img
с непустым alt
атрибут будет предполагать, что вы предоставляете достаточную контекстную информацию для людей, использующих программы чтения с экрана, и alt
информация может предоставлять только информацию, уже видимую на изображении и не интересную слепым людям или другим пользователям программы чтения с экрана.
<h1>Come to visit George</h1>
<img alt="Map to reach George" src="map.gif" aria-hidden="true" />
Take the highway A13 direction London.
When you reach London follow A2 highway in direction Liverpool.
Я думаю, что это более полезно для SEO без введения избыточности.
TL; DR
Если вы не хотите предоставлять информацию читателям экрана:
- Если SEO вызывает беспокойство, используйте не пустой
alt
сaria-hidden=true
- В противном случае используйте
alt=""
img
сrole=presentation
должен иметь пустойalt
img
с пустымalt
иметь неявноеrole=presentation