如果
li
元素后面紧跟另一个li
元素,或者父元素中没有其他内容,则可省略li
元素的结束标记。
但是这个:
<ol>
<li>one
<li>two
<li>three
<ol>
<li>three.one
<li>three.two
</ol>
<li>four
</ol>
出现在render fine。
我不知道四个li
是否被认为是“紧跟”三个li
,因为中间有一个ol
。规范并不是很清楚 - 从技术上讲,文本“one”代表一个TextNode,所以两个li
并没有真正紧随其后。
是否实际是否需要结束</li>
?
我只安装了Chrome和Firefox,但他们都提供了我的预期。
据我所知,ul
和ol
的唯一合法直接子女为li
,因此无法出现歧义,正确?
答案 0 :(得分:8)
那么,W3C所说的是
li
元素的结束标记是必需,如果li
元素后面紧跟其他li
元素或者如果在父元素中有更多内容。
这怎么可能? li
ol
,ul
和menu
内的ol
元素可以only occur。
但ul
和li
仅允许menu
作为他们的孩子。
<menu>
<li>foo</li> <!-- mandatory -->
<a href="//example.com">bar</a>
</menu>
<menu>
<li>foo</li> <!-- mandatory -->
Hello, I am text content!
</menu>
怎么样?它也是allows flow content。所以你有它:
li
当您看到示例时,很明显省略结束标记会使解析器无法确定script
的结束位置。
修改:正如@BoltClock指出的那样,现在也允许template
和<ul> <!-- or ol or menu -->
<li>foo</li> <!-- mandatory -->
<script></script>
</ul>
元素:
{{1}}
答案 1 :(得分:0)
当</li>
关闭LI
后跟LI
以外的任何元素时,关闭{{1}}不是可选的。