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

dyn*_*mic 270 html

这两者之间是否符合标准?

<p>Text text text ...
    <ol>
        <li>First element</li>
    </ol>
</p>
<p>
    Other text text ...
</p>
Run Code Online (Sandbox Code Playgroud)

要么

<p>
    Text text text ...
</p>
<ol>
    <li>First element</li>
</ol>
<p>
    Other text text ...
</p>
Run Code Online (Sandbox Code Playgroud)

s4y*_*s4y 387

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

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

4.5.1 p要素:

分类: 流量内容,可触摸内容.
内容模型: 短语内容.


4.5.5 ol要素:

分类: 流动内容.
内容模型:零个或多个li脚本支持元素.

第一部分说p元素只能包含短语内容(这是"内联"元素,如spanstrong).

第二部分说ols是流内容("块"元素,如pdiv).所以他们不能在里面使用p.


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

4.5.13 div元素:

分类: 流量内容,可触摸内容.
内容模型: 流内容.

  • @link:是的,w3.org有点技术性.不过,毫无疑问,何时以及如果你理解它们是正确的. (9认同)
  • 我认为@Sid解释规范和一些术语肯定是有帮助的.如果他走得更远,那将是一个很好的答案.他也可以明确回答问题:).我添加了一个编辑. (5认同)
  • @dynamic 我总是去[MDN 的 HTML 参考](https://developer.mozilla.org/en-US/docs/Web/HTML) 以便更轻松地阅读文档。 (2认同)

Que*_*tin 39

第二.第一个是无效的.

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

浏览器会像这样处理它:

<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 -->
Run Code Online (Sandbox Code Playgroud)


hid*_*den 10

到这里http://validator.w3.org/ 上传你的html文件,它会告诉你什么是有效的,什么不是.


Kri*_*nov 7

实际上你应该只在内部放置内嵌元素p,所以在你的情况下ol更好

  • 这与@David Dorward的回复相同,你不喜欢这样的回复. (2认同)

Dav*_*vid 5

<p>tetxetextex</p>
<ol><li>first element</li></ol>
<p>other textetxeettx</p>
Run Code Online (Sandbox Code Playgroud)

因为两者<p><ol>呈现为块状元件.