Доступность: рекомендуемое соглашение alt-text для SVG и MathML?
обзор
HTML5 теперь<svg> и <math> разметка с HTML-документом без зависимости от внешних пространств имен (достойный обзор здесь). У обоих есть свои alt - аналоги атрибутов (см. ниже), которые эффективно игнорируются сегодняшним программным обеспечением для чтения с экрана. Таким образом, эти элементы недоступны для слепых пользователей.
планируется ли реализовать стандартную конвенцию alt-text для эти новые элементы? я прочесал документы и пришел сухой!
Дополнительные Детали
относительно SVG: альтернативный текст SVG можно считать содержимым корня title или desc тег.
<svg>
<title>An image title</title>
<desc>This is the longer image description</desc>
...
</svg>
я нашел один screen-reader, который читает его как таковой, но является ли это стандартом? предыдущие методы из вставки SVG также были проблемы с доступностью, так как <object> теги относятся непоследовательно к экранным читателям.
Относительно MathML: альтернативный текст MathML должен храниться в alttext атрибут.
<math alttext="A squared plus B squared equals C squared">
...
</math>
поскольку программы чтения с экрана, похоже, не признают этого, библиотека математического рендеринга MathJax вставить текст в во время выполнения.
<span aria-label="[alttext contents]">...</span>
к сожалению NVDA, челюсти,и другие надежно не читают эти ярлыки пока также. (Более на ВАЙ-АРИЯ)
в отношении: не имея успеха С в значительной степени неподдерживаемыми атрибутами ARIA, я попытался использовать title атрибуты. Они также, похоже, игнорируются на этих "иностранных" HTML-элементах.
Подведение Итогов
более чем быстрый Хак, я ищу рекомендуется чтобы разместить альтернативный текст на этих новых HTML-элементов. Возможно, есть спецификация W3C, которую я пропускаю? Или это все еще просто слишком рано в игре?
5 ответов:
после некоторого копания, я нашел несколько официальных рекомендаций. К сожалению, большинство из них не функционируют в данный момент времени. Как браузеры, так и программы чтения с экрана имеют много возможностей для реализации, прежде чем математика и SVG можно считать доступными, но вещи are начинаю смотреть.
отказ от ответственности: приведенные ниже рекомендации-это то, что я собрал за последние несколько месяцев кодирования. Если что-то не так, пожалуйста, дайте мне знать. Я постараюсь чтобы держать это в курсе, как браузеры и на программное обеспечение прогрессирует.
MathML
рекомендация
использовать
role="math"вместе сaria-labelв окрестностяхdivтег (см. docs). Добавлениеtabindex="0"позволяет читателям экрана сосредоточиться конкретно на этом элементе; этот элементaria-labelможно говорить с помощью специального сочетания клавиш (напримерNVDA+Tab).<div role="math" tabindex="0" aria-label="[spoken equivalent]"> <math xmlns="http://www.w3.org/1998/Math/MathML"> ... </math> </div>Ограничения/Соображения
- отрывочная поддержка чтения с экрана на
aria-label(и что менее важноrole="math").
обновление: соответствующие билеты NVDA относительноaria-labelздесь и здесь.- оборачивать в
divилиspanтег, кажется ненужным, так какmathэто первый-класс элемент в HTML5.- я нашел очень мало ссылка на MathML
alttextтег.
обновление: это ромашка-специфическое дополнение, описанное здесь.ссылки
- http://www.w3.org/TR/wai-aria/roles#math
- http://lists.w3.org/Archives/Public/public-pfwg-comments/2008JanMar/0008.html
- http://www.w3.org/TR/wai-aria-practices/#math
SVG
рекомендация
используйте верхний уровень
<title>и<desc>тегиrole="img"иaria-labelна корневом теге SVG.<svg role="img" aria-label="[title + description]"> <title>[title]</title> <desc>[long description]</desc> ... </svg>Ограничения/Соображения
- по состоянию на февраль 2011 года, IE 9 бета читает все
<title>и<desc>теги, что, вероятно, нежелательно. Однако, программу NVDA, челюсти, и WindowEyes будет читатьaria-labelкогда элемент также содержитrole="img".- при загрузке SVG-файла (то есть не встроенного в HTML), корневой уровень
<title>тег станет заголовком страницы браузера, который будет читать на экране читатель.ссылки
таким образом, вместо того, чтобы скрывать информацию в атрибуте, рассмотрите возможность размещения его обычно на странице как заголовок в
<p>тег рядом с разделом svg или math, или поместите текст в<figcaption>тег и поместите его и раздел svg / math в<figure>элемент.Если вы действительно не хотите, чтобы зрячие пользователи видели информацию, я считаю, что стандартный метод заключается в том, чтобы абсолютно позиционировать заголовок с большим отрицательным "левым" значением, по крайней мере, до тех пор, пока читатели экрана не догонят HTML5.
Что касается SVG, аналогичного, но не идентичного приведенным выше предложениям, то, по-видимому, лучшим текущим подходом может быть использование Aria-labelledby со ссылкой на идентификатор элемента, содержащего "alt text" (а не сам текст alt).
<svg aria-labelledby="svg1title"> <title id="svg1title">A wide rectangle</title> <rect width="70" height="10" fill="black" /> </svg>вы также можете использовать элементы title и desc, установив Aria-labelledby="svg1title svg1desc".
Источник:http://www.sitepoint.com/tips-accessible-svg/
досадно, если вы сделаете это, вы нужно (как-то) убедиться, что идентификаторы уникальны на всей странице (другими словами, если вы используете много SVG, все они должны иметь разные идентификаторы для заголовка). Это также относится к другим идентификаторам в SVG и является общим серьезным раздражением с встроенным SVG.
(Если это серьезно проблематично, вы можете изучить внедрение SVG с помощью тега img - вы все равно можете сделать это "встроенным" без внешнего файла, если вы используете URL-адрес данных и base64-кодируете SVG.)
теоретически изображение svg должно быть более доступным, чем растровое изображение с alt-тегом. Во-первых, текст может быть сохранен как текст в svg, целые фрагменты текста, а не только короткое предложение. Это печально, если утилита для чтения с экрана игнорировать эту дополнительную информацию. Однако не все текстовое содержимое может быть видно в любой момент времени, как и для html. Многие изображения svg являются статическими изображениями, но растущая тенденция (основанная на фактическом использовании в открытом интернете), похоже, использует более динамические SVG, например, для отображения графиков или диаграммы, которые можно редактировать или складывать.
еще одна вещь, чтобы быть в курсе, что
<title>элементы будут отображаться в виде всплывающих подсказок (для зрячих пользователей) во всех браузерах AFAIK с поддержкой svg (по крайней мере, последнего поколения), и что вы можете поместить их в другие элементы svg тоже (название применяется к элементу, к которому он является прямым потомком).
не проверяли это, но вы можете попробовать добавить alt="whatever" в контейнер DIV. Да, это не допустимый атрибут для DIV, но я вижу, что старые программы чтения с экрана не заботятся о том, где появляется alt.
например:
<div aria-label="Whatever" alt="Whatever" role="math"> <math>...</math> </div>очевидно, это в предположении, что программы чтения с экрана будут читать атрибуты alt (неправильно) на элементах, отличных от IMG. Не проверял, но это лучше, чем ждать, пока читатели экрана догонят, если это сработает.
Comments