为什么有些HTML元素允许“交叉”?

时间:2011-07-28 11:44:26

标签: html

为什么我这样做:

<div> aaaaaaaa <b></div>
<div> bbbbbbbb </div>
<div> </b> ccccccccc </div>

...内容“bbbbbbbb”以粗体显示?那么为什么我不能对另一个标签做同样的事情,比如&lt; span&gt;而不是&lt; b&gt;?大胆的情况只是浏览器试图修复它还是实际上有效?

我正在尝试隐藏一些可能跨越多个&lt; div&gt;的文本内容。标签,但只知道文本的开始和结束位置。我可以使用&lt; b&gt;等标签吗?这样做(用css stylin)?或者这是一个非常糟糕的主意?

你还有其他建议吗?

编辑:我无法轻易更改HTML,因此验证无用。 HTML是用户生成的。

2 个答案:

答案 0 :(得分:7)

不允许。只是浏览器尝试执行错误恢复。

元素必须以树形结构排列。每个元素都有一个父元素(根节点除外)。

鉴于上述输入,Chrome会生成以下内容:

<div> aaaaaaaa <b></b></div><b>
<div> bbbbbbbb </div>
</b><div><b> </b> ccccccccc </div>

您不应该依赖此类错误恢复。永远记得validate

答案 1 :(得分:2)

使用格式错误的HTML是一个坏主意,因为不同的浏览器会以不同方式处理此类“错误”。但是你总是可以在父div元素中嵌套内容,你可以隐藏/显示它。

像这样:

<div style="visibility:hidden">
  <div>First hidden sentence</div>
  <div>Second hidden sentence</div>
</div>