对于典型的网站,例如 一个博客中,section应该包含网站标题。 是的,在网站的每个页面上。
为什么? 在网站中,其所有网页都共享各个部分。 让我们以导航为例:
该section在网站的每个页面上都重复出现。 它代表站点导航,而不是页面导航。 区别很重要! {页面导航可以是目录(如Wikipedia文章中的表),也可以是长篇文章的分页。}
如果您将文章标题用作section,则网站导航将在此标题的范围内。
My first blog post
…
Navigation
- …
因此,该标记表示:导航(→由2608809232619619275264开始)是文章的一部分(→由article开始)。 但这不是事实,此导航不是文章的导航。 链接实际上是整个网站的一部分,该网站由网站标题表示。
当文章也包含副标题时,问题将变得更加清楚:
My first blog post
…
Why I’m blogging
…
Why you should read my blog
…
Navigation
- …
如您所见,没有办法将文章子标题与导航区分开。 该文章似乎包含三个子标题:“为什么我要写博客”,“为什么要阅读我的博客”和“导航”。
因此,如果我们改为使用section作为网站标题,并使用article作为文章标题,则导航也可以在网站标题的范围内,也可以使用nav:
John’s blog
My first blog post
…
Navigation
- …
现在,该标记传达了:有一个名为“约翰的博客”的站点(→由2608809232619275275开始),并且包含一篇文章(→由第article开始)和站点导航(→由第二个nav开始)。 当然,该文章的小标题现在是h3。
通过使用section作为文章标题的另一个问题是,通常在第一个标题之前有内容,例如 网站标题,包括网站标题和其他内容。 对于通过标题导航的用户,该第一内容将是“不可见的”。 因此,最好给每个单独的块一个标题。
HTML5使用分段/概述算法对此进行了形式化。 它解决了HTML 4.01可能存在的许多概述问题,因为内容订单现在(大部分)可以免费使用,而且如果您不想的话,也不必“发明”实际的标题,这要感谢section/article / nav/aside。 而且在HTML5中,网站标题也应该是h1,它是body的子级,但不能是任何sectioning元素/根的子级。 所有其他部分均在此网站标题的范围内。