Доступность: использование роли ARIA= «группа» во вложенном списке (ul)

#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 примеров того, как вы можете использовать это» вместо тысяч слов с неопределенным значением! хе-хе!