在下面的标记中,我有一个围绕<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角色是如何继承的?
答案 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"
应用于没有隐式本机语义的元素,除非使用具体作为删除其后代的隐式本机语义的包装。