role =“ banner”的上下文是什么

时间:2019-07-11 07:29:38

标签: html accessibility w3c wai-aria

Banner Landmark的W3C ARIA示例页面中, HTML技巧标签中包含以下文本:(强调我的意思)

  
      
  • HTML5 header元素的上下文是banner元素时,它定义了body界标。
  •   
  • 当HTML5 header元素是以下任何元素的后代时,不被视为banner界标:      
        
    • article
    •   
    • aside
    •   
    • main
    •   
    • nav
    •   
    • section
    •   
  •   

我了解这段代码的标题不会具有自动设置的横幅角色:

<body>
  <main>
    <article>
      <header><!-- ... --></header>
    </article>
  </main>
</body>

但是,嵌套在上述任何元素中的标头又如何呢?而不是body元素的直接后代呢?
此代码中的标题是否已自动设置横幅广告角色?

<body>
  <div>
    <header><!-- ... --></header>
    <main></main>
  </div>
</body>

什么是元素/ header元素的上下文?
仅仅是元素的直接父元素吗?
还是设置上下文的最接近的祖先元素?

我在w3.org的Roles documentation上找不到任何提示,该页面上多次提及 context 这个词,但不是在同一上下文中使用(双关语),如示例页面中所述。

1 个答案:

答案 0 :(得分:2)

official <header> element spec可以提供更多的说明,尽管您可能不得不读几次才能读懂。

  

<header>元素的最接近祖先sectioning root元素是<body>元素,并且不是<main>元素或sectioning content元素的后代时,则该<header>的作用域为<body>元素,并且主要表示面向站点的内容,或者整个页面的介绍性内容。

然后继续说:

  

辅助技术可以向用户传达标题元素应用于整个页面的语义。该信息可以提供有关内容类型的提示。例如,当用户导航到范围为body元素的标题元素时,屏幕阅读器可以宣布该元素的角色(在本例中为“横幅”)。

因此,如果您的<header>的范围不限于<body>,则屏幕阅读器很可能不会将标头宣布为横幅地标,但这取决于屏幕阅读软件来决定。