你可以在HTML 5文档中拥有任意数量的<nav>吗?</nav>

时间:2011-04-26 17:26:00

标签: html5

我喜欢HTML 5标准中的新标签。我可以多次使用它们吗?

与3个<nav>代码或两个<sidebar>代码相比,我可以创建像<fuu>这样的新代码吗?

在xhtml中我有:

<div class="nav-wrap">
 <div class="nav">
   ...
 </div>
</div>

所以我可以这样做:

<nav class="wrap">
  <nav>  <!-- can <nav> have <li>'s ? -->
  ...
  </nav>
</nav>

3 个答案:

答案 0 :(得分:15)

<nav>元素在html5 spec中定义,但<sidebar>元素不是。您可以根据需要使用尽可能多的<nav>元素(只要它们不是嵌套的),但是您必须提供其他DTD并希望用户使用的浏览器足够灵活接受新元素。

我建议定义新元素,只需使用现有的语义元素来创建你想要的效果。

<div class="sidebar"></div>已经足够好了,如果您将主要内容包装在<main>中,它将被视为辅助内容,这有效地提示浏览器了解该区域不是页眉,页脚,或主要内容,在大多数网站上等同于侧边栏。

但是,在大多数情况下,<aside>元素适合用作边栏。

Per the spec:

  

旁边元素表示页面的一部分,该部分由与旁边元素周围的内容相切的内容组成,并且可以认为与该内容分开。 此类部分通常在印刷字体中表示为侧边栏

强调我的

答案 1 :(得分:5)

'nav'元素应该在有'main'导航的地方使用,通常是在你网站的标题中,但它也可以在你让用户导航当前页面的地方。

通常不需要将它放在你的页脚中(因为它通常不被认为是你的主要导航),虽然它不会真的受伤。

zzzzBov的答案并不完全正确,所以让我试着给出一个更准确的例子。

作为“侧边栏”的替代方案,您应该使用“旁白”标记,该标记通常包含辅助内容(如侧面导航,链接,广告,类似的内容)。

<div class="sidebar"></div>

这是在语义上是一个侧边栏,远离它。 div元素用作样式或JavaScript的钩子,没有语义含义,这就是为什么引入'aside'元素,请使用它!

如果你只需要一个造型包装,那么一个div是完美的(甚至是首选)。

根据经验,您的HTML应包含描述您的内容的元素。你通常可以大声朗读它,这是有道理的。

例如:“我的页面侧面有一个导航元素列表”,将翻译为:

<aside>
  <nav>
    <h1>Navigation</h1>
    <ul>
      <li><a href="/someplace">Link to someplace</li>
      <li><a href="/someplace-else">Link to someplace else</li>
    </ul>
  </nav>
</aside>

总而言之:一般来说,您可以在主要导航区域使用导航元素,例如网站标题中的导航,有时会找到导航当前页面的导航。

不是主要内容(但可能相关)的网页部分通常放在“旁边”元素中。

希望这有帮助!

答案 2 :(得分:1)

nav

中嵌套无序链接列表更为常见
<nav class="wrap">
  <ul>
    <li>...
  </ul>
</nav>

您可以在页面中拥有尽可能多的nav个元素,但不需要在nav中包装每个链接或一组链接 - 只有“主要导航”应该是在nav元素中。有good introduction to nav in this HTML5 Doctor post

对于侧边栏,无需创建自己的元素,请使用aside element

您可以创建自己的元素,并且仍然可以在HTML5兼容的浏览器中使用您的标记,HTML5 tokenization algorithm并不关心您使用的标记名称,只要它们遵守规则,但您不会然后写HTML5,这是毫无意义的。我建议在规范开头阅读"Conformance requirements for authors"部分,特别是“可能是拼写错误的案例”:

  

当用户输入简单的拼写错误时,就是这样   如果可以捕获错误,将会很有帮助   早,因为这可以拯救作者   很多调试时间。这个   因此通常是规范   认为使用元素是一个错误   名称,属性名称等,   与中定义的名称不匹配   这个规范。