我的问题涉及何时你有一个div浮动(浮动:左)和一个之后没有浮动的div。在那种情况下,为什么是否会解除未加载的div覆盖并重叠第一个div?它就像第一个一样,浮动的div从第二个未释放的div超过第一个div的流程(如绝对定位)中取出。
我知道第二个未开发的div中的文本不会这样做。它似乎意识到第一个div和它旁边的浮动。
我也知道修复是让第二个div也浮动到左边。
我的问题是关注为什么。为什么第二个没有浮动的div(除了可能在其中的任何文本)覆盖并重叠第一个浮动的div?
在另一个关于Stack Overflow的类似问题中,有人说" float从正常流中移除一个元素,这意味着相邻元素的位置就像浮子不存在一样......这不是&#39 ;如果元素具有内联显示的情况。"所以我的问题是为什么是从正常流中移除的浮动元素(内联元素除外)?我理解为什么内联元素会出现这种情况(例如,您希望将文本刷新到浮动的div中,以便在图像周围进行自动换行)。但为什么它从正常流程中删除了???
以下是一些代码来说明我的意思。
.box1 {
border: solid 3px;
width: 350px;
float: left;
height: 100px;
}
.box2 {
background-color: lightblue;
width: 400px;
height: 150px;
border: blue solid 3px;
}

<div>
<div class="box1"></div>
<div class="box2"></div>
</div>
&#13;
答案 0 :(得分:1)
它就像第一个,浮动的div被从流程中取出
确切地说,这就是原因。浮动元素是out-of-flow:
如果一个元素是浮动的,那么它就被称为流出 定位,或是根元素。
鉴于floats:
的行为,这是必要的浮动是一个在当前行上向左或向右移动的框。
如果他们没有从正常流程中移除,他们会在转移之前继续占据初始位置的一些空间。
注意内联浮点数也不例外,因为没有这样的东西。如Relationships between 'display', 'position', and 'float'
中所述,浮动被阻塞因此,浮点后的块重叠:
由于浮动不在流中,因此创建了未定位的块框 在浮动箱垂直流动之前和之后,好像浮子没有 存在。但是,旁边创建的当前和后续行框 必要时缩短浮子以为边缘盒腾出空间 浮动。
您可以通过建立新的块格式化上下文来阻止此行为:
表的边框,块级替换元素或 正常流程中的元素,用于建立新的block formatting context(例如,带有&#39;溢出的元素&#39;除了&#39;可见&#39;) 不得与同一块中任何浮点数的边距框重叠 将上下文格式化为元素本身。如有必要, 实现应该通过将它放在任何下面来清除所述元素 在浮子之前,但如果有浮子,可以将它放在这些浮子附近 足够的空间。
.box1 {
border: solid 3px;
width: 350px;
float: left;
height: 100px;
}
.box2 {
background-color: lightblue;
width: 400px;
height: 150px;
border: blue solid 3px;
overflow: hidden; /* Establish BFC */
}
&#13;
<div>
<div class="box1"></div>
<div class="box2"></div>
</div>
&#13;