Fel*_*lix 26 css overflow css-float
这个小提琴最好用以下HTML 解释这个问题:
<div class="outer">
<div class="inner-left"></div>
<div class="inner-right"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.outer {
width: 100px;
border: solid 5px #000;
}
.inner-left {
float: left;
height: 200px;
width: 50px;
background: #f00;
}
.inner-right {
float: right;
height: 200px;
width: 50px;
background: #0f0;
}
Run Code Online (Sandbox Code Playgroud)
基本上,我想知道为什么overflow: hidden导致外部元素在高度上增长,包含两个浮动元素?
Bol*_*ock 35
简单来说,这是因为具有overflow不是visible(默认值)的块框创建了一个新的块格式化上下文.
创建新块格式化上下文的框被定义为拉伸以按高度包含它们的浮动,如果它们本身没有指定的高度,则默认为auto(规范称这些框阻止格式化上下文根):
10.6.7块格式化上下文根的"自动"高度
在某些情况下(参见上文第10.6.4和10.6.6节),建立块格式化上下文的元素的高度计算如下:
[...]
此外,如果元素具有任何浮动后代,其下边距边缘低于元素的底部内容边缘,则增加高度以包括这些边.仅考虑参与此块格式化上下文的浮动,例如,浮动在绝对定位的后代或其他浮动内部不是.
原来的CSS2规范并不是这种情况,而是作为CSS2.1中的一个变化而引入的,以应对不同(更紧迫)的问题.这个答案提供了对变化的解释.出于这个原因,似乎很容易将其称为副作用,尽管这些变化非常有意.
另请注意,这与清除浮动(间隙)不同.花车的间隙只有当您使用会发生clear财产和有前面的彩车将被清除:
如果你clear: both的示例中有一个元素,那就是外部元素的兄弟元素,浮动元素将被清除,但外部元素不会拉伸.
如果你有一个类似的元素(或伪元素)而不是外部元素的最后一个子元素(使它成为浮动的后续兄弟),外部元素将向下拉伸以包含该元素的下边缘,并且对于零高度元素,它实质上意味着浮动的最底边.这种技术被称为"clearfix",因为元素(或伪元素)没有其他目的,只能强制外部元素通过其中的间隙来包含浮动.
| 归档时间: |
|
| 查看次数: |
5112 次 |
| 最近记录: |