我应该在<nav> s中使用<ul>和<li>吗?

kik*_*ito 108 html5 html-lists nav

标题几乎解释了它.

现在我们有了专用<nav>标签,

这是:

<nav>
  <ul>
    <li><a href="#foo">foo</a></li>
    <li><a href="#bar">bar</a></li>
    <li><a href="#baz">baz</a></li>
  </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)

比以下更好吗?

<nav>
  <a href="#foo">foo</a>
  <a href="#bar">bar</a>
  <a href="#baz">baz</a>
</nav>
Run Code Online (Sandbox Code Playgroud)

我的意思是,假设我不需要额外的DOM级别来进行某些CSS定位/填充,首选方法是什么,为什么?

小智 63

nav元素和列表提供不同的语义信息:

  • nav元素传达我们正在处理的主要导航块

  • 该列表表明此导航块内的链接形成了项目列表

http://w3c.github.io/html/sections.html#the-nav-element,您可以看到nav元素也可以包含散文.

所以是的,在nav元素中有一个列表确实增加了意义.

  • 看起来像UL标签没有任何帮助:http://css-tricks.com/navigation-in-lists-to-be-or-not-to-be/ (7认同)
  • 该链接似乎对我有用.请务必阅读后续内容,其中声明了列表,没有列出抽奖.https://css-tricks.com/wrapup-of-navigation-in-lists/ (2认同)

Kal*_*Kal 10

更清晰的标记nav > a当然很诱人,但请考虑子菜单和下拉菜单的问题(其他答案中未提及的内容)。HTML 允许您将一个列表嵌套在另一个列表中,这是一种构造此类菜单的优雅(我敢说,语义)方式:

<nav>
  <ul>
    <li><a href="#foo">foo</a></li>
    <li><a href="#bar">bar</a>
        <ul>
            <li><a href="#qux">qux</a></li>
            <li><a href="#quux">quux</a></li>
        </ul>
    </li>
    <li><a href="#baz">baz</a></li>
  </ul>
</nav>
Run Code Online (Sandbox Code Playgroud)

您不能嵌套a元素,因此排除了nav > a,除非您开始将内容包装在divs 中:

<nav>
  <a href="#foo">foo</a>
  <a href="#bar">bar</a>
    <div>
      <a href="#qux">qux</a>
      <a href="#quux">quux</a>
    </div>
  <a href="#baz">baz</a>
</nav>
Run Code Online (Sandbox Code Playgroud)

一些流行的 CSS 框架(如 Bulma 和 Semantic/Semantic UI)对带有下拉菜单的导航栏做了类似的事情。所以这是可以做到的,但对我来说感觉有点笨拙。qux并且quux并不bar像第一个示例中那样真正嵌套在其中。