ARIA角色是否由后代继承?

时间:2014-02-11 10:26:26

标签: html accessibility wai-aria

在下面的标记中,我有一个围绕<main>元素的包装器以用于表示目的。

<div id="main-wrapper" role="presentation">
  <main id="main" role="main">
    <h1>Title</h1>
    <p>Lorem ipsum, dolor sit amet.</p>
  </main>
</div>

但是我不确定后代是否继承了ARIA roles。如果将<main>元素视为表示元素,那将是一个问题,因为它周围的包装有role="presentation"

这里是否正确使用了ARIA角色? ARIA角色是如何继承的?

1 个答案:

答案 0 :(得分:3)

这可能取决于上下文和角色。规格和示例: http://www.w3.org/TR/wai-aria/roles#presentation列出了每个角色的“继承状态和属性”以及role="presentation"的良好示例。

对于您的情况,具有role="presentation"的包装元素将具有所有的隐式本机语义,其后代元素已移除role="main"覆盖“presentation”恢复<main>语义。但这也意味着你必须用它们各自的ARIA角色覆盖<main>中的语义元素,这在<main>

的背景下会变得非常复杂。

但最重要的是,role="presentation"只能应用于具有隐式角色的元素。 <span><div>没有隐含角色,如编辑草案中的解释所示:

  

表示角色用于具有隐式本机的元素   语义,意味着有一个默认的辅助功能API角色   元素

<!-- 3. This role declaration is redundant. -->
<span role="presentation"> Sample Content </span>

基本上永远不会将role="presentation"应用于没有隐式本机语义的元素,除非使用具体作为删除其后代的隐式本机语义的包装。