它在任何版本的 HTML 中都有效。但有效性是一个正式的概念,也允许各种废话。
在实践中,ol means a numbered list of items。它不是一个列表的抽象概念,一个有序的序列。例如,一个段落在逻辑上是一个语句序列,连续的段落构成更高层次的序列。甚至一个单词的字母也是一个有序的序列。我们仍然不为他们使用ol。我们使用ol 来列出一个由浏览器生成编号的相当短的项目的逐项列表,如食谱或购物清单或支持某个想法的参数列表。项目的长度没有具体的上限,除非它们越长,就越不适合以编号列表的形式呈现。
因此,如果您的列表项需要标题,那么您不应该使用列表。在实际方面,如果您使用h2 作为ol 的li 内的第一个元素,那么默认情况下,项目编号将以比标题小得多的字体显示(并且是正常粗细,而不是粗体) )。每当默认呈现非常奇怪时,您应该问自己是否使用 HTML 标记的方式真的打算使用。
该示例由前面带有标题的段落组成。除了 h2 或 p 之外,没有任何实际或理论上的理由让它有标记,除非您需要将标题和段落的组合视为一个单元,或将整个构造视为一个单元,以达到目的样式或脚本。如果需要,请使用div,例如
<div class="foo">
<div class="bar">
<h2>The First Item</h2>
<p>a descriptive paragraph</p>
</div>
<div class="bar">
<h2>The Second Item</h2>
<p>a descriptive paragraph</p>
</div>
<div class="bar">
<h2>The Third Item</h2>
<p>a descriptive paragraph</p>
</div>
</div>
将 foo 和 bar 替换为反映内容的名称,或使用通用名称(如 section 和 subsection)。 (这部分取决于品味和编码风格,部分取决于您是否打算对具有不同含义的内容使用相似的标记。)
或者,您可以根据 HTML5 草案使用 section 标记,但它会导致问题,因为一些旧浏览器根本无法识别,并且在功能或外观方面没有实际好处(尽管这就像任何东西一样) ,可能会改变)。
将div 与类一起使用可以让您轻松设置它们的样式(或在 JavaScript 中处理它们),而无需您首先需要防止的特殊默认呈现(作为带有边距的编号列表)的负担。
如果您希望对项目进行编号,最稳健的方法是最明显的方法:将数字放入标题中,例如<h2>1 The First Item</h2>。如果您认为创作中的灵活性,即重新排序部件、添加和删除部件的可能性,而无需手动更改数字,足以证明在最旧的浏览器中缺少数字,您可以使用 CSS(自动编号和生成的内容) 来插入数字。