Testing 手风琴无法通过可访问性检查

Testing 手风琴无法通过可访问性检查,testing,accessibility,accordion,Testing,Accessibility,Accordion,我有一个手风琴是用 标记输出为: 为什么 在圣西庇特的权杖上有两个尼布。不要为威尼斯人的自由而浪费生命。奎斯奎特 尼西。但这并不是一种哀伤。不知道怎么办。 当我使用Chrome中的Lighthouse来测试它的可访问性时,我收到了这些消息 具有要求子元素包含特定[role]的ARIA[role]元素缺少部分或所有必需的子元素。 某些ARIA父角色必须包含特定的子角色才能执行其预期的可访问性功能。了解更多 [角色]未包含在其所需的父元素中 某些ARIA子角色必须由特定的父角色包含,才能正确执

我有一个手风琴是用

标记输出为:


为什么
在圣西庇特的权杖上有两个尼布。不要为威尼斯人的自由而浪费生命。奎斯奎特
尼西。但这并不是一种哀伤。不知道怎么办。

当我使用Chrome中的Lighthouse来测试它的可访问性时,我收到了这些消息

具有要求子元素包含特定[role]的ARIA[role]元素缺少部分或所有必需的子元素。 某些ARIA父角色必须包含特定的子角色才能执行其预期的可访问性功能。了解更多

[角色]未包含在其所需的父元素中 某些ARIA子角色必须由特定的父角色包含,才能正确执行其预期的可访问性功能。了解更多

下面显示的“了解更多”链接是他们建议的代码示例

。。。这意味着将
role=“tablist”
作为父级,然后将
role=“tab”
作为子级

在我在这个问题中发布的代码中,与来自

因此,我不知道为什么这会使可访问性检查失败。

role=“tab”
必须是
role=“tablist”
元素的直系后代(或包含在没有语义意义的元素中)。公平地说,WAI-ARIA规范中确实不清楚这一点,但我自己以前也遇到过这个问题。(您可以使用创建关联,但如果选项卡位于
表格列表
元素之外,则更适用于此)

因为您的
被包装在
中,这打破了模式

我已经测试了它,它似乎在JAWS和NVDA中工作,但为了安全起见(因为有大量的屏幕阅读器,其中一些可能不喜欢您的实现),我会做一些小的调整

删除围绕
是一个选项,可能也是我推荐的选项。在一个小部件上有多个
元素没有多大意义,相反,您应该在为该部分创建的选项卡上方使用标题

第二个选项是使
功能类似于按钮,但这意味着添加您自己的事件处理程序、焦点指示器和
tabindex=“0”
,使其可聚焦。通过这种方式,您可以将
role=“tab”
移动到
本身上,这将删除语义含义,但保留在屏幕阅读器中导航到它的功能

我个人不喜欢第二种选择,但我明白为什么有些人会选择这样做

我建议的另一件事是将
选项卡
选项卡面板
放在
  • 对于不支持
    tablist
    的屏幕阅读器,这意味着用户仍然会收到“三选一”等通知,因此更容易理解他们有选项

    此外,建议每个
    tabpanel
    都有一个
    tabindex=“0”
    ,以便在选择选项卡后进行导航。这是一种非常罕见的情况,鼓励将非交互元素聚焦

    您可能会发现这很有用。

    role=“tab”
    必须是
    role=“tablist”
    元素的直系后代(或包含在没有语义意义的元素中)。公平地说,WAI-ARIA规范中确实不清楚这一点,但我自己以前也遇到过这个问题。(您可以使用创建关联,但如果选项卡位于
    表格列表
    元素之外,则更适用于此)

    因为您的
    被包装在
    中,这打破了模式

    我已经测试了它,它似乎在JAWS和NVDA中工作,但为了安全起见(因为有大量的屏幕阅读器,其中一些可能不喜欢您的实现),我会做一些小的调整

    删除围绕
    是一个选项,可能也是我推荐的选项。在一个小部件上有多个
    元素没有多大意义,相反,您应该在为该部分创建的选项卡上方使用标题

    第二个选项是使
    功能类似于按钮,但这意味着添加您自己的事件处理程序、焦点指示器和
    tabindex=“0”
    ,使其可聚焦。通过这种方式,您可以将
    role=“tab”
    移动到
    本身上,这将删除语义含义,但保留在屏幕阅读器中导航到它的功能

    我个人不喜欢第二种选择,但我明白为什么有些人会选择这样做

    我建议的另一件事是将
    选项卡
    选项卡面板
    放在
    • 对于不支持
      tablist
      的屏幕阅读器,这意味着用户仍然会收到“三选一”等通知,因此更容易理解他们有选项

      此外,建议每个
      tabpanel
      都有一个
      tabindex=“0”
      ,以便在选择选项卡后进行导航。这是一种非常罕见的情况,鼓励将非交互元素聚焦


      你可能会发现它很有用。

      灯塔给出的结果有些可疑。您是否尝试过Axe或SiteImprove等浏览器插件?请检查W3C提供的代码:。您的示例用于制表符,而不是手风琴,因此不适用。@NathanielFlick Lighthouse已经使用Axe core至少两年了,因此结果通常是有效的。这曾经是一个大问题,但现在如果灯塔说有问题,那么斧头也会这么说(w