html5 – 什么时候结束不是可选的?

W3 says

An li element’s end tag may be omitted if the li element is immediately followed by another li element or if there is no more content in the parent element.

但是这个:

<ol>
    <li>one
    <li>two
    <li>three
        <ol>
            <li>three.one
            <li>three.two
        </ol>
    <li>four
</ol>

出现在render fine.

我不知道四个人的李是否被认为是“紧跟三个人”,因为中间有一个人.规范并不是很清楚 – 从技术上讲,文本“one”代表一个TextNode,所以两个人的li并不是真正紧随其后.

实际上是否有任何关闭< / li>的情况有必要的?

我只安装了Chrome和Firefox,但它们都能实现我的预期.

据我所知,ul和ol唯一合法的直接子女是李,所以不能有任何歧义,对吧?

解决方法

那么,W3C所说的是什么

An li element’s end tag is mandatory if the li element is immediately followed by something else than another li element or if there is more content in the parent element.

这怎么可能? li元素可以在ols,uls和菜单中使用only occur.
但ols und uls只允许lis作为他们的孩子.

菜单怎么样?它也是allows flow content.所以你有它:

<menu>
    <li>foo</li> <!-- mandatory -->
    <a href="//example.com">bar</a>
</menu>

<menu>
    <li>foo</li> <!-- mandatory -->
    Hello,I am text content!
</menu>

当您看到示例时,很明显省略结束标记会使解析器无法确定li结束的位置.

编辑:正如@BoltClock指出的那样,现在也允许脚本和模板元素:

<ul> <!-- or ol or menu -->
    <li>foo</li> <!-- mandatory -->
    <script></script>
</ul>

相关文章

HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码