将 aria 用于可扩展项目

using aria for expandable items

我有一个可展开的 div 元素,当用户点击时它会展开。 我怎样才能通过屏幕阅读器访问它。 下面是我的代码

HTML

    <div class="expandable" (click)="expandItem()" attr.aria-expanded="isCollapsed">
    Some content to show on expand
</div>

JS:

expandItem() {
  this.isCollapsed = true
}

变量 isCollapsed 最初设置为 false。

我可能表现出我的 javascript 无知,但我以前没见过 (click)="expandItem()"attr.aria-expanded="isCollapsed"。我看过onclick="expandeItem()"aria-expanded="false"。但我暂时忽略这方面。

首先,您的 <div> 没有语义意义,因此您需要几个 ARIA 属性来解决这个问题。但在你这样做之前,请考虑“First Rule of ARIA Use”,这实际上是不使用 ARIA。如果可能,请使用原生语义 HTML 元素作为您的首选。

我需要有关您的场景的更多信息,但请考虑使用真实的 <button> 而不是 <div>。听起来你可能有一个“disclosure widget”。

如果使用真正的<button>,那么您的<div>将需要:

  • tabindex="0"(允许键盘焦点移动到它)
  • 点击处理程序(鼠标用户)
  • 一个键盘处理程序(供键盘用户使用space输入到select它)
  • a role="button" 所以屏幕 reader 宣布正确的语义
  • (我假设你的 <div> 有标签)

除此之外,您还需要解决 aria-expanded 问题。在按钮(或 div)的 onclick 中,只需切换 aria-expanded 的值。由于该属性是“state" (instead of a "property”),更改其值将由屏幕 readers 自动宣布。