何时关闭不是可选的?

时间:2014-08-04 03:39:17

标签: html5

W3 says

  

如果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,但他们都提供了我的预期。

据我所知,ulol的唯一合法直接子女为li,因此无法出现歧义,正确?

2 个答案:

答案 0 :(得分:8)

那么,W3C所说的是

  

li元素的结束标记是必需,如果li元素后面紧跟其他li元素或者如果在父元素中有更多内容。

这怎么可能? li olulmenu内的ol元素可以only occur。 但ulli仅允许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}}不是可选的。