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

标题几乎可以解释它。

现在我们有一个专用的<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> 

比以下更好吗?

 <nav> <a href="#foo">foo</a> <a href="#bar">bar</a> <a href="#baz">baz</a> </nav> 

我的意思是,假设我不需要一个额外的DOM级别的一些CSS定位/填充,什么是首选的方式,为什么?

导航元素和列表提供了不同的语义信息:

  • 导航元素通信,我们正在处理一个主要的导航块

  • 该列表通知该导航块内的链接形成一个项目列表

http://w3c.github.io/html/sections.html#the-nav-element你可以看到一个导航元素也可以包含散文。;

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

在这一点上,我会保留<ul><li>元素,因为并非所有的浏览器都支持HTML5标签。

例如,我遇到了一个使用<header>标签的问题 – Chrome和FF的工作就像一个魅力,但歌剧borked。

在所有浏览器完全支持HTML之前,我会坚持使用它,但是依靠旧版本来实现向后兼容。

真的取决于你。 如果您通常使用无序列表来标记导航菜单,那么我会在<nav>元素中继续这样做。 例如,<nav>元素的要点在于识别网站导航到计算机阅读器,所以无论您使用列表还是仅仅链接都不重要。

不,他们是相同的。 请记住,HTML 5向后兼容HTML 4列表,所以您可以随意使用它们。 第二个版本的代码更less。

如果您担心浏览器的向后兼容性,请确保包含此垫片以提供<nav><article>等标签的function。

如果我们正在“按书”说话,那么就不要; 您不需要使用列表来标记导航。 他们提供的唯一真正的好处是在造型时提供更好的灵活性。

我会保留<ul><li>标签,因为新的标签( <nav><section><article>等)只是更多的<div>的语义版本。

出于同样的原因,你不会只在<div>加载链接,它们也应该在<nav>标签内部结构化。

对我来说,无序列表是额外的标记,并不是真正需要的。 当我看一个HTML文档时,我希望它尽可能清晰易读。 观众已经清楚,如果使用正确的缩进,就会显示一个列表。 因此,向这些标签添加UL是不必要的,并且使读取文档变得更加困难。

尽pipe您可能会获得一些灵活性,但我相信最好不要使用非语义的ul类来夸大标记,并一举devise出一个元素。 而且你没有任何借口:使用:之前和之后:伪select器。

编辑 :我已经意识到,一些ARIA屏幕阅读器对待列表不同于简单的锚标签。 如果您的网站面向残疾人士,我可能会考虑使用基于列表的方法。

关于这个确切的问题,在CSS技巧上有一个非常详细的post。 这显然是一个激烈的争论问题。 该职位有200多条评论。

在列表中导航:是或不是(CSS技巧,2013年1月)