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> 

简单的回答是ol元素在p元素内部是不合法的。

为了明白为什么,让我们来看看规范 ! 如果你可以习惯HTML规范,它会回答你的许多问题和好奇心。 你想知道一个ol可以住在p里面。 所以…

4.5.1 p元素 :

类别: stream量内容 , 可触摸内容 。
内容模型: 短语内容 。


4.5.5 ol元素 :

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

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

第二部分说, ol是stream量内容 (像pdiv这样的“块”元素)。 所以他们不能用在p里面。


ol和其他flow content可以用在像div这样的其他元素:

4.5.13 div元素 :

类别: stream量内容 , 可触摸内容 。
内容模型: stream内容 。

第二。 第一个是无效的。

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

浏览器会像这样处理它:

 <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里面放入内联元素,所以在你的情况下, ol是更好的

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

因为<p><ol>都是以块的forms呈现的。