非正统使用html5导航标签

时间:2015-06-28 02:21:42

标签: html5 nav semantic-markup

我做过"创意"使用新的html5元素,有时会推动预期的边界。

与大多数人一样,我的网站主要由文章评论和其他文章的链接组成。我决定只使用一次文章标签,所以没有任何混淆。对于评论,我使用了旁边的元素,我认为它符合定义 - 它与内容相关,但可以不用。

在链接到其他文章(实际上是带有摘录和分类辅助工具的标题)的情况下,我决定只使用导航,因为缺少更好的元素,我知道这就是它变成的地方棘手。通常,nav旨在作为主导航的链接列表。好吧,点击相关帖子实际上是我网站(以及大多数Web 2.0网站)上的主要导航方式。他们也是一个"列表"链接,在主链接旁边,它们还包含指向类别列表的链接,一个链接到作者的其他帖子,另一个链接到基于日期的存档。

问题在于每页上有10多个这样的导航(不能将它们包装在相同的导航中,因为它们并非全部连续),这可能不是规范作者的意图 - 或者是它?

代码验证得很好,分段也很有意义,但我想知道是否还有任何实际后果。例如,我不希望该网站成为屏幕阅读器用户的新生儿(otoh,如果它没有任何形象,我不会想要迎合一个没有问题的问题)也存在)。那么可能发生的最坏情况是什么呢?

2 个答案:

答案 0 :(得分:2)

我想唯一可能发生的事情是网络抓取工具(例如googlebot)会将其视为导航部分。我们只能告诉谷歌某人是否会向我们透露一些秘密......

需要考虑的事项:

阅读导航标签规格:

  

浏览器(例如禁用用户的屏幕阅读器)可以使用此功能   元素,以确定是否省略此初始呈现   内容。

文章规格说:

  

一篇文章本身应该有意义,应该可以阅读它   独立于网站的其他部分。

     

可以使用元素的示例:

     

论坛帖子博客文章报纸文章

所以..如果是我,我会把整件事(所有文章)放在<main></main>标签内,并为每篇文章创建单独的<article>。对于评论我也会使用<aside>,也会像我一样使用<nav>的链接,但也许其他人有更好的解决方案。

答案 1 :(得分:2)

遵循HTML5规范允许各种用户代理“在作者可能没有考虑过的各种环境中呈现和使用文档和应用程序”。 (HTML5, Semantics)。

如果您没有使用可用的最具体的元素,或者您使用的元素不是根据其定义,那么某些用户代理可能无法完成他们的工作。

如果这些是“实际后果”,则无法回答,因为这取决于您关注的内容,以及用户代理执行和将使用您的文档(这是不可能知道的)。

例如:

  • article element被定义为代表其他作品中的“用户提交的评论”。
    该规范甚至明确提到了博客文章评论的情况,该评论可以表示为“article元素嵌套在博客条目的article元素中。”

    可以想象,例如,评论处理用户代理会查找(甚至依赖)此标记。

    如果不遵循此处的规范(不使用article进行评论),则无法使用基于使用适当元素的HTML5或其扩展的其他功能。例如,如果您将aside元素(代表注释)嵌套在article中(应该这样做,因为它们与article相关,而不是整个文档) :

    • 您无法使用address element提供article作者的联系信息。如果您使用article(按预期),每个人(这意味着,原始帖子以及每条评论)都可以拥有自己的address

    • 您无法将author link type用于评论用户的网站,因为这适用于“最近的article元素祖先”(因此评论用户将被视为您帖子的作者)

  • 虽然使用nav element作为“相关链接”并没有错(其实际定义相当广泛),但我认为这样做会适得其反。

    如果链接与article相关,则应将其嵌套在此article中。在这里使用nav会传达错误的含义:它不是article的导航,对吧? <{1}}取代nav,而使用aside element似乎是合适的。

    对于没有经典菜单的网站,分页通常是主要导航。

    并考虑一下屏幕阅读器用户的例子:他们可能会使用一项功能跳转到页面的导航(例如,获取网站的概述,了解可用的内容)。即使忽略了这样一个事实,即拥有多个分散的nav元素可能会使这一点变得更难,听一些(甚至不是全部)帖子的列表是多么有用,这些帖子通常比一个理想的帖子更长。网站导航?最重要的是,这种导航甚至可能会在页面之间发生变化,因此用户必须一次又一次地执行此操作,跳过可能的重复数据。

tl; dr :除非您有充分的理由,否则请遵循规范中的定义。更好地使用无意义的元素(divspan,在某些情况下section等),而不是“重新解释”根据其定义的含义或其预期不能使用的其他元素目的