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


292

两者之间哪个符合标准?

<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>

40
@oded:上下文重要吗?
动态的

Answers:


422

简短的答案是ol元素在法律上不允许在p元素内部。

要了解原因,让我们看一下规格!如果您对HTML规范感到满意,它将回答您的许多问题和好奇心。您想知道an是否ol可以住在内p。所以…

4.5.1 p元素

分类: 流内容可触内容
内容模型: 短语内容


4.5.5 ol元素

类别: 流内容
内容模型:零个或多个li脚本支持元素。

第一部分说p元素只能包含短语内容(它们是“内联”元素,如spanstrong)。

第二部分说ols是流内容(诸如p和的“ block”元素div)。因此它们不能在内使用p


ols和other flow content可用于其他一些元素,例如div

4.5.13 div元素

分类: 流内容可触内容
内容模型: 流内容


9
@link:是的,w3.org有点技术性。不过,毫无疑问,何时以及是否理解它们是正确的。
nyson 2013年

5
我认为@Sid解释规范及其某些术语绝对有帮助。如果他走得更远,那将是一个很好的答案。他还可以明确回答这个问题:)。我为此添加了一个编辑。
studgeek

1
很难读吗?不要这么认为,请转至4.4.1 The p element,作者甚至谈论fantastic sentences或类似的内容
Jaime Hablutzel 2014年

1
@dynamic我总是去MDN的HTML参考,以便于阅读文档。
邦克

1
@AaronLS有点!当浏览器将HTML返回给您时(例如,在开发人员工具中或从中.innerHTML),它是从元素树中重新生成的。因此,Chrome不会对HTML进行太大的调整,而是从原始HTML创建有效树,然后从该树生成新HTML。
s4y

40

第二。第一个无效。

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

浏览器将像这样处理它:

<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 -->



5
<p>tetxetextex</p>
<ol><li>first element</li></ol>
<p>other textetxeettx</p>

因为<p><ol>都是元素渲染为块。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.