首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><nav>与<header>的关系

<nav>与<header>的关系
EN

Stack Overflow用户
提问于 2018-08-07 10:47:53
回答 2查看 4.6K关注 0票数 3

我经常遇到具有以下结构的网页:

代码语言:javascript
复制
<header role="banner">
    <nav role="navigation">
    </nav>
</header>

例如,带有role="navigation"的元素放置在role="banner"中,但在我看来,当<nav><header>位于相同的DOM级别时,正确的结构:

代码语言:javascript
复制
<header role="banner">
</header>
<nav role="navigation">
</nav>

请帮助我理解哪个例子更正确。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-07 12:04:37

没有一个标准的方法是正确的或错误的。

这完全取决于开发人员在站点结构和语义中有什么意义。

任何文档的标题通常位于页面的顶部,因此在页面中包含导航 <nav>自然是合乎逻辑的。

除了您提供的代码之外,在本机role=""元素上使用HTML5并不好,因为现代浏览器和辅助技术识别该元素的语义并相应地传递它,因此不需要使用阿里亚角色*

*值得注意的是,IE11不这样做。因此,如果您打算使用IE11支持用户,那么包含冗余角色属性仍然是一个很好的实践。没有角色属性,具有IE11 + NVDA的用户将无法使用地标区域导航。 -信用麦克弗森

票数 4
EN

Stack Overflow用户

发布于 2018-08-08 06:15:02

这两个例子都很好。

WAI创作实践提供了一些地标设计的一般原则。这些说明表明:

  • 地标区域可以嵌套,并且
  • 导航地标区域不必是顶级地标.

需要考虑的是不同的屏幕阅读器如何处理嵌套区域。JAWS和NVDA提供了一个地标概述工具,允许发现嵌套的地标区域。另一个工具是一个键盘命令,可以跳到下一个地标;但是一些屏幕阅读器(例如ChromeVox)只以这种方式公开顶级地标。

在我看来,页面的主导航最好被视为顶级地标(通常就在<header>之后,就像您的第一个示例一样)。如果您的页面有辅助导航区域,则这些区域适合嵌套。例如,网站某一部分的子菜单可能是<aside>内部的一个<aside>

如果您的页面有多个导航地标,那么使用aria-labelaria-labelledby为它们提供标签是很重要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51724929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档