它在任何版本的HTML中都是有效的。但有效性是一个正式的概念,允许各种无意义的东西。
实际上,ol
表示一系列带编号的项目。它不是列表的抽象概念,有序序列。例如,段落在逻辑上是一系列语句,并且连续的段落构成了更高级别的序列。甚至单词的字母也是有序序列。我们仍然不使用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(自动生成编号和生成的内容)来插入数字。