HTML5子导航语义

Adi*_*Adi 9 html nav

一个快速问题:HTML5导航,特别是子导航(从语义的角度来看).

<nav>在主菜单的标题中.在标准页面的左侧,我有第二级导航和右侧第三级导航(不,我没有设计网站).有什么我可以做HTML5/ARIA明智区分3个菜单吗?或者它们都是简单的<nav>块?

我甚至不认为我需要<aside>左侧或右侧列,因为除了这些实际菜单之外没有任何其他信息.

任何想法/建议将不胜感激.

Ala*_*irC 8

这可能是一个老问题,但现在有一个更好的答案:

您可以使用标题隐式标记每个导航部分,并显式使用WAI-ARIA属性:

<nav role="navigation" aria-labelledby="firstLabel">
  <h2 span id="firstLabel" class="hidden">Main menu</h2>
  <ul/>
</nav>
...
<nav role="navigation" aria-labelledby="secondLabel">
  <h2 span id="secondLabel" class="hidden">Local pages</h2>
  <ul/>
</nav>
Run Code Online (Sandbox Code Playgroud)

对于像屏幕阅读器这样的用户代理,他们可以将其报告为"本地页面,导航"(尽管它们的报告方式各不相同).

有关使用labelledbyW3C wiki页面的更多信息,请阅读.


Pär*_*der 3

我将通过赋予导航部分语义相关性id并按照 HTML 代码中的重要性顺序放置它们来区分导航部分,如下所示:

<body>
  <nav id="main-navigation">
    <!-- The main menu goes here -->
  </nav>
  <nav id="sub-navigation">
    <!-- The left hand menu goes here -->
  </nav>
  <nav id="leaf-navigation">
    <!-- The right hand third level menu goes here -->
  </nav>

  <section id="content">
    <!-- Actual page content -->
  </section>
</body>
Run Code Online (Sandbox Code Playgroud)

除此之外,我认为没有必要进一步区分这些部分。上面的方法很容易理解,应该相当容易设计样式并且语义清晰,这对我来说当然足够好了。

  • [**W3 HTML5 规范**](http://www.w3.org/wiki/HTML/Elements/nav) 澄清:“nav 元素仅适用于由主要导航块组成的部分。”它接着说,对于页脚中的一组链接来说,导航元素是多余的。**在我看来,子导航完全是有争议的。** 我的情况与@Adi 类似,提问者:我无法决定我的 DHTML 内容选项卡是否应该位于 &lt;nav 内&gt; 或不。 (4认同)