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

Ale*_*lex 8 html5

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

像3个<nav>标签,或两个<sidebar>标签,我可以发明新的标签<fuu>吗?

在xhtml我有:

<div class="nav-wrap">
 <div class="nav">
   ...
 </div>
</div>
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做:

<nav class="wrap">
  <nav>  <!-- can <nav> have <li>'s ? -->
  ...
  </nav>
</nav>
Run Code Online (Sandbox Code Playgroud)

zzz*_*Bov 15

<nav>元素在html5规范中定义,但<sidebar>元素不是.您可以使用任意数量的<nav>元素(只要它们不是嵌套的),但是您必须提供其他的DTD,并希望用户使用的浏览器足够灵活,可以接受新元素.

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

<div class="sidebar"></div>如果您将主要内容包装在内,则会将其视为次要内容<main>,这有效地提示浏览器了解该区域不是页眉,页脚或主要内容,这在大多数网站上都等同于侧边栏.

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

根据规格:

aside元素表示页面的一部分,其中包含与aside元素周围的内容相切的内容,并且可以将其视为与该内容分开.这些部分通常在印刷字体中表示为侧边栏.

强调我的


Rei*_*per 5

“ nav”元素应在进行“主要”导航的任何地方使用,通常在网站的标题中,但也可以在允许用户浏览当前页面的地方使用。

尽管实际上不会造成伤害,但通常无需将其放在页脚中(因为通常不将其视为主要导航)。

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

作为“边栏”的替代方法,您应该使用“ aside”标签,该标签通常包含次要内容(如侧面导航,链接,广告,类似内容)。

<div class="sidebar"></div>
Run Code Online (Sandbox Code Playgroud)

从语义上来说,这不是补充工具栏,而是远离它。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>
Run Code Online (Sandbox Code Playgroud)

总结一下:通常,您可以在主要导航区域中使用nav元素,例如在网站标题中找到的导航,有时还可以找到导航当前页面的导航。

非主要内容(但可能相关)的页面部分通常放在“ aside”元素中。

希望这可以帮助!

  • “ aside”并不总是在语义上正确。 (2认同)
  • 当我查看我的一些旧答案时,我偶然发现了这个较旧的主题。我认为,经过进一步的思考,我由于多种原因而错了,其中很多是您认为我错误地使用了“语义”一词。我以前曾以“含义”的一般含义来使用它,而不是用常规的术语来代表“浏览器对通用帮助用户的自动解释的含义”。 (2认同)