在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 这个词,但不是在同一上下文中使用(双关语),如示例页面中所述。
答案 0 :(得分:2)
official <header>
element spec可以提供更多的说明,尽管您可能不得不读几次才能读懂。
当
<header>
元素的最接近祖先sectioning root元素是<body>
元素,并且不是<main>
元素或sectioning content元素的后代时,则该<header>
的作用域为<body>
元素,并且主要表示面向站点的内容,或者整个页面的介绍性内容。
然后继续说:
辅助技术可以向用户传达标题元素应用于整个页面的语义。该信息可以提供有关内容类型的提示。例如,当用户导航到范围为body元素的标题元素时,屏幕阅读器可以宣布该元素的角色(在本例中为“横幅”)。
因此,如果您的<header>
的范围不限于<body>
,则屏幕阅读器很可能不会将标头宣布为横幅地标,但这取决于屏幕阅读软件来决定。