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
元素只能包含短语内容 (即“内联”元素,如span
和strong
)。
第二部分说, ol
是stream量内容 (像p
和div
这样的“块”元素)。 所以他们不能用在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呈现的。