浏览器如何处理某些标签为"允许重叠"和其他人一样"不允许"

时间:2014-09-18 22:12:22

标签: html

<br><b>ABCDEF<u>GHJIKLOM</b>PQRST</u>UVWXYZ
<br><b>ABCDEF<ins>GHJIKLOM</b>PQRST</ins>UVWXYZ

请参阅第一个示例中的下划线如何降至T,而在第二个示例中,它突然在M结束。但代码基本相同,只是u应该改变特定外观而ins只是提示文本被插入并且应该标记为“某种方式”,好吧​​它被标记为下划线。经验告诉我,这一定是好的,但我只是想知道为什么有些标签允许与其他标签重叠并且与其他标签配对不允许重叠?在浏览器中的某个地方是否有一对表?或者某些标签被标记为“重叠友好”?这是为什么?

1 个答案:

答案 0 :(得分:4)

两个片段都无效。浏览器必须从您的输入重建有效的DOM树;在这两种情况下,结果是:

<b>
    ABCDEF
    <u>
        GHJIKLOM
    </u>
</b>
<u>
    PQRST
</u>
UVWXYZ

<b>
    ABCDEF
    <ins>
        GHJIKLOM
    </ins>
</b>
PQRSTUVWXYZ

section 12.2.3.3 ("Parse state") of the HTML5 standard中指定了控制从无效HTML输入中恢复的算法。

这里特别导致结果差异的是<ins>标记按HTML5分类为格式元素,而<b><i>是。 (格式化元素的完整列表是in section 12.2.3.2,并且非常小。)这会导致<ins>在被另一个结束标记“中断”时不会重新打开。