辅助功能:在嵌套列表 (ul) 中使用 ARIA role="group"

Acessibility: Using ARIA role="group" within nested list (ul)

我有一份要显示的议程项目列表。 为此,我会使用一个简单的 ul.

问题是,在此列表中,我按月对项目进行了分组。所以通常它们是按日期排序的,现在它们也按月分组。

示例:

January 2010
- Item 1
– Item 2

February 2010
- Item 3
– Item 4

March 2010
- Item 5
– Item 6

我怎样才能使这些信息更易于访问。

我发现这个 POST 关于 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 是一个组。

或者我会放弃嵌套的 uls,用一个 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>

我很乐意提供一些意见。

提前谢谢你。 干杯

role="group" 不适用于 non-interactive 项。它旨在将输入、按钮等控件组合在一起,或将相关元素组合在一起。

您的第三个示例最接近本示例的结构。标题非常适合快速导航(因为标题级别是屏幕 reader 用户浏览页面的主要方式之一)并且关系是在 HTML 本身内创建的,无需任何额外的 WAI-ARIA.

再一次不需要 role="group"

以下示例将是完全可以接受和访问的。我已将其更改为一组列出的 <ul><li>,因为这在语义上是正确的,并且也消除了对任何 WAI-ARIA 的需要。 (黄金法则,如果可以,请使用语义元素,因为对这些元素的支持是 100%,support for WAI-ARIA is a little patchy still. 因此应该用于免费信息/如果无法使用标准 [=35 实现所需的文档结构/关系=]5个元素。)

显然,如果第 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>