我做过"创意"使用新的html5元素,有时会推动预期的边界。
与大多数人一样,我的网站主要由文章评论和其他文章的链接组成。我决定只使用一次文章标签,所以没有任何混淆。对于评论,我使用了旁边的元素,我认为它符合定义 - 它与内容相关,但可以不用。
在链接到其他文章(实际上是带有摘录和分类辅助工具的标题)的情况下,我决定只使用导航,因为缺少更好的元素,我知道这就是它变成的地方棘手。通常,nav旨在作为主导航的链接列表。好吧,点击相关帖子实际上是我网站(以及大多数Web 2.0网站)上的主要导航方式。他们也是一个"列表"链接,在主链接旁边,它们还包含指向类别列表的链接,一个链接到作者的其他帖子,另一个链接到基于日期的存档。
问题在于每页上有10多个这样的导航(不能将它们包装在相同的导航中,因为它们并非全部连续),这可能不是规范作者的意图 - 或者是它?
代码验证得很好,分段也很有意义,但我想知道是否还有任何实际后果。例如,我不希望该网站成为屏幕阅读器用户的新生儿(otoh,如果它没有任何形象,我不会想要迎合一个没有问题的问题)也存在)。那么可能发生的最坏情况是什么呢?
答案 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 :除非您有充分的理由,否则请遵循规范中的定义。更好地使用无意义的元素(div
,span
,在某些情况下section
等),而不是“重新解释”根据其定义的含义或其预期不能使用的其他元素目的