就HTML5规范而言,
您可以使用任何标题元素(
h1
-
h6
),只要始终使用剖切元素(如
article
).
所有这些代码段都是有效的,它们创建了相同的大纲,并且在语义上是等效的:
<!-- h1 + h2 -->
<body>
<h1>heading for 'body'</h1>
<article>
<h2>heading for 'article'</h2>
</article>
</body>
<!-- h1 + h1 -->
<body>
<h1>heading for 'body'</h1>
<article>
<h1>heading for 'article'</h1>
</article>
</body>
<!-- h1 + h6 -->
<body>
<h1>heading for 'body'</h1>
<article>
<h6>heading for 'article'</h6>
</article>
</body>
<!-- h5 + h1 -->
<body>
<h5>heading for 'body'</h5>
<article>
<h1>heading for 'article'</h1>
</article>
</body>
由于每个剖切元素在这些代码段中没有多个标题,因此标题元素
h1
-
h6级
像这样工作(经常被提议)
h
要素:排名无关紧要。
但是,像往常一样,一些用户代理可能不符合这里的规范,
由于各种原因。如果您还想将预期的大纲传达给这些UAs,则必须依赖heading元素列组(就像HTML 4.01中的情况一样)。这就是为什么
the spec recommends to do this
:
作者应使用标题排名(
h1
-
h6级
)传达文件结构。
如果无法计算排名,该怎么办?
尽可能做出最佳猜测,并为不支持完整HTML5大纲算法的UAs提供一个不理想的大纲。对于支持HTML5s大纲算法的UAs来说,它可以很好地工作。
猜测如下:
-
永远不应该是
h1
,因为您的代码段将是一个剖切元素,所以它至少从文档中的级别2开始(级别1将始终是具有
body
作为最近的剖切父对象)。
-
根据代码段的性质,不太可能出现低标题。例如,如果代码段是博客帖子的评论表单,那么它应该与
文章
元素或下面的一个级别(如果它嵌套在
文章
),因此通常
h2
或
h3
.
-
如果代码段表示对用户非常重要的内容,则应使用较高的标题,因为使用较低的标题时,依赖大纲进行导航的用户可能永远无法访问代码段内容,因为它可能“隐藏”在较深的大纲中,用户可能对下面的条目不感兴趣(因此他们可能会跳过整个部分及其所有子部分)。