当父级设置为溢出时,为什么垂直边距会消失:可见?如果设置为溢出:隐藏边距再次可见。这似乎违反直觉。
我想我理解当元素的内容不适合溢出时溢出应该如何工作,但是我不明白边缘发生了什么。
以下是一个例子:(http://jsfiddle.net/VrVc7/)
#outer {
background-color:#EEE;
overflow:hidden;
}
#inner {
margin: 30px;
padding: 5px;
background-color:#ABE;
}
<div id="outer">
<div id="inner">abc</div>
</div>
答案 0 :(得分:7)
它被称为collapsing margin
。根据{{3}}
在CSS中,两个或多个框的相邻边距(可能或 可能不是兄弟姐妹)可以组合形成单一的边缘。边距 结合这种方式据说会崩溃,并由此产生组合 保证金称为折现保证金。
如何阻止collapsing margin
。
答案 1 :(得分:4)
这是因为利润率下降:
如果你有溢出:隐藏,内部div的边距保留在外部div中。
如果溢出:可见,则顶部和底部边距与外部div的零边距相互影响,因为它们相互接触。然后重新计算,使其与内边距相同。
因此,溢出:隐藏将打破内部崩溃的边缘。您可以通过为外部div添加填充或边框来打破边距折叠。所以他们不会互相接触,所以不会崩溃
答案 2 :(得分:1)
我知道这就是它的样子。但是这里真正发生的事情被称为保证金崩溃。大多数情况下,如果父母有保证金,或者如果两个兄弟姐妹有保证金,那么就是另一个。 想象一下,你有一个有三个孩子的div:
|--|
|[]|
|[]|
|[]|
|--|
如果你给孩子留了10分。每个孩子之间总共会有10个垂直间距,即使你预计会有20个。这是因为如果边缘是共享的,它们会相互坍塌。
无论哪种方式谷歌它,这将比我更好地解释它。