ol/ul应该在<p>还是外面?

这两者中哪一个是标准兼容的?

<p>Text text text ...
<ol>
<li>First element</li>
</ol>
</p>
<p>
Other text text ...
</p>

<p>
Text text text ...
</p>
<ol>
<li>First element</li>
</ol>
<p>
Other text text ...
</p>
170251 次浏览

第二。第一个无效。

  • 段落不能包含列表。
  • 列表不能包含段落,除非该段落完全包含在单个列表项中。

浏览器会这样处理它:

<p>tetxtextextete
<!-- Start of paragraph -->
<ol>
<!-- Start of ordered list. Paragraphs cannot contain lists. Insert </p> -->
<li>first element</li></ol>
<!-- A list item element. End of list -->
</p>
<!-- End of paragraph, but not inside paragraph, discard this tag to recover from the error -->
<p>other textetxet</p>
<!-- Another paragraph -->
<p>tetxetextex</p>
<ol><li>first element</li></ol>
<p>other textetxeettx</p>

因为<p><ol>都是呈现为块的元素。

实际上你应该只把内联元素放在p里面,所以在你的情况下,ol在外面更好

简单的回答是,ol元素在法律上不允许存在于p元素中。

要知道为什么,让我们去看说明书!如果您熟悉HTML规范,它将回答您的许多问题和好奇。你想知道ol是否可以存在于p中。所以…

4.5.1 p元素:

类别: 流内容明显的内容
内容模型: 措辞的内容


4.5.5 ol元素:

< p > 类别: 流内容
内容模型: 0个或多个script-supporting元素。

第一部分说p元素只能包含措辞的内容(像spanstrong一样是“内联”元素)。

第二部分说__abc0是流内容(“块”元素,如pdiv)。所以它们不能p中使用。


ols和其他flow content可以在其他一些元素中使用,如div:

4.5.13 div元素:

类别: 流内容明显的内容
内容模型: 流内容