代码之家  ›  专栏  ›  技术社区  ›  Nitesh Rana

对可展开项使用aria

  •  1
  • Nitesh Rana  · 技术社区  · 7 年前

    div 元素,该元素在用户单击时展开。 我如何通过屏幕阅读器访问它。

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

    JS:

    expandItem() {
      this.isCollapsed = true
    }
    

    变量 isCollapsed

    1 回复  |  直到 7 年前
        1
  •  1
  •   slugolicious    7 年前

    我可能表现出对javascript的无知,但我还没有看到 (click)="expandItem()" 或 attr.aria-expanded="isCollapsed" 有 onclick="expandeItem()" 和 aria-expanded="false"

    首先,你的 <div> 没有语义含义,因此需要几个ARIA属性来修复。但在你这样做之前,先考虑一下“ First Rule of ARIA Use ,这本质上是不使用ARIA。如果可能的话,首先选择原生语义HTML元素。

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

    <按钮> 是 不 <部门> 将需要:

    • tabindex="0" (允许键盘焦点移动到它)
    • 单击处理程序(适用于鼠标用户)
    • 键盘处理程序(供键盘用户使用) 和 进入 选择它)
    • A. role="button" 所以屏幕阅读器会宣布正确的语义
    • <部门>

    除此之外,您还需要解决您的问题 aria-expanded 问题在按钮(或div)的onclick中,只需切换 . 因为该属性是一个“ state “(而非 property ),屏幕阅读器将自动宣布更改其值。