我有以下浮动div:
+---------------+ +-----------+
| | | |
| | | Div-B |
| | |Float:left |
| | | |
| Div-A | | |
| Float: left | +-----------+
|- - - - - - - -|-+-----------+
| | | |
| Ext | | Div-C |
| | | |
|- - - - - - - -|-+-----------+
| |
+---------------+
如你所见,我有三个div,其中Div-A和Div-B向左浮动。由于Div-C(没有Ext区域)没有浮动属性,它会跳转到Div-A右侧的空白区域。因此,Div-C的左边界应该与Div-A的右边界相邻。实际上,这也正在发生,即Div-C中的文本从Div-A的右边界开始。但在Google-Chrome浏览器中,在开发人员工具中,我可以看到Div-C的左边界实际上与Div-A的左边界相邻。 我的问题是为什么Google-Chrome在Div-A的左边界附近显示Div-C的左边界?
答案 0 :(得分:1)
根据CSS2.1规范for floats:
,这是正确的行为由于浮动不在流中,因此创建了未定位的块框 在浮动框垂直流动之前和之后,好像浮动没有 存在。但是,旁边创建的当前和后续行框 必要时缩短浮子以为边缘盒腾出空间 浮动。
因此浮点数不会影响正常块的边界,只会影响文本。该块仍然占据容器的完全可访问宽度,并且浮子只是重叠它。但是,对于建立new block formatting context的块(例如具有display:table或overflow:hidden)的块,情况会发生变化。这些块可能会缩短其文本的宽度(并且在所有浏览器中都这样做,尽管规范并不严格要求这样做。)
答案 1 :(得分:0)
如果div-c中有足够的文本超过div-a的底部,它将环绕div-a的底部,然后与其左边界相邻。