#html #list #accessibility #wai-aria
#HTML #Список #Специальные возможности #wai-aria
Вопрос:
У меня есть список пунктов повестки дня, которые я хочу отобразить. Для этого я бы использовал простой ul
.
Дело в том, что в этом списке я сгруппировал элементы по месяцам. Итак, в целом они отсортированы по дате, и теперь они также сгруппированы по месяцам.
Пример:
January 2010
- Item 1
– Item 2
February 2010
- Item 3
– Item 4
March 2010
- Item 5
– Item 6
Как я мог бы сделать эту информацию более доступной.
Я нашел этот пост о role="group"
который, кажется, находится прямо здесь ?! https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_group_role
Так будет ли следующая структура иметь смысл?
<ul>
<li role="group">
<h3>January 2010</h3>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</li>
<li role="group">
<h3>February 2010</h3>
<ul>
<li>Item 3</li>
<li>Item 4</li>
</ul>
</li>
</ul>
Или как бы я пояснил, что вложенный ul является группой.
Или я бы оставил вложенные ul, построил все с помощью одного, ul
с равным li
для каждой записи?
Или я бы сделал что-то вроде:
<div role="list">
<div>
<h3 id="label-1">January 2010</h3>
<ul aria-labelledby="label-1" role="group">
<div role="listitem">Item 1</div>
<div role="listitem">Item 2</div>
</ul>
</div>
<div>
<h3 id="label-2">February 2010</h3>
<ul aria-labelledby="label-2" role="group">
<div role="listitem">Item 3</div>
<div role="listitem">Item 4</div>
</ul>
</div>
</div>
Я был бы очень рад некоторым вводным данным.
Заранее благодарю вас. приветствия
Ответ №1:
role="group"
не предназначен для использования с неинтерактивными элементами. Он предназначен для группировки элементов управления, таких как входные данные, кнопки, вместе или для группировки связанных элементов.
Ваш третий пример наиболее близок к тому, как это должно быть структурировано. Заголовки отлично подходят для быстрой навигации (поскольку уровни заголовков являются одним из основных способов навигации пользователей программы чтения с экрана по странице), а связи создаются внутри самого HTML, устраняя необходимость в какой-либо дополнительной WAI-ARIA.
И снова нет необходимости в role="group"
.
Следующий пример был бы вполне приемлемым и доступным. Я изменил его на набор перечисленных <ul>
и <li>
, поскольку это семантически правильно и устраняет необходимость в какой-либо WAI-ARIA там также. (Золотое правило, используйте семантические элементы, если можете, поскольку поддержка для них составляет 100%, поддержка WAI-ARIA все еще немного неоднородна. и so следует использовать для дополнительной информации / если нет способа достичь желаемой структуры документа / отношений с использованием стандартных элементов HTML5.)
Очевидно, что если элементы с 1 по 4 являются интерактивными элементами, и вы оставили это для краткости, то это совсем другое дело, и я изменю этот ответ.
<ul>
<li>
<h3>January 2010</h3>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</li>
<li>
<h3>February 2010</h3>
<ul>
<li>Item 3</li>
<li>Item 4</li>
</ul>
</li>
</ul>
Комментарии:
1. Большое вам спасибо. Понятный и хороший ответ. У меня нет элементов управления, так что все должно быть в порядке. Спасибо за разъяснение. 👍🏼
2.
role="group"
не предназначен для группировки кнопок или входных данных. Используется для группировки элементов, принадлежащих иерархической структуре, такой как дерево. w3.org/TR/wai-aria/#document_structure_roles Пример выпадающего меню developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA /…3. @CalebTaylor — Я пытался найти для вас реальный пример группы кнопок из W3C, но не могу его найти, без сомнения, он похоронен в совершенно не связанном документе. Однако digitala11y.com/group-role получено из довольно приличного источника, и ссылка выше охватывает входные данные. Вы только что использовали примеры как единственный вариант использования, если вы проверите ссылку W3C, которую вы опубликовали, в ней четко указано «Набор объектов пользовательского интерфейса», который охватывает что угодно. Смотрите w3.org/TR/wai-aria/#dfn-widget для определения виджета как это также имеет значение.
4. Внес незначительную поправку в мой ответ, поскольку мое определение было слишком узким, поскольку я включал только элементы управления, теперь исправлено включение любых связанных элементов, спасибо @CalebTaylor
5. не проблема, честно говоря, я трачу больше времени на то, чтобы разобраться в документации, чем на самом деле пишу код. Я бы хотел, чтобы они просто сказали «вот 50 примеров того, как вы можете использовать это» вместо тысяч слов с неопределенным значением! хе-хе!