我一直有一个非常奇怪的CSS问题。我的一些页面显示了一个无法解释的空间"元素之间。检查代码显示此空间不属于任何元素。
我把它缩小了,我想我知道为什么会出现这个问题。但我想知道,为什么会发生这种情况。
我认为,问题是min-height: 50px
选择器中的#outer
会将#inner
的下边距添加到#outer
以下,从而导致上述无法解释的空间。如果要用height: 50px
替换它,空间就会消失。
这种情况发生在Chrome上,但不适用于FireFox。
我的理论是Chrome的CSS首先列出元素,然后检查是否满足最小高度要求。如果没有,那么它会扩展div的高度,推动"无法解释的空间"随之而来。它必须复制或继承子元素的下边距。我认为这只发生在底部边缘。
我已经尝试过两次这个理论的测试,添加padding: 1px;
并添加overflow: hidden;
他们都会导致div的高度包含它的孩子,从而摆脱了问题。虽然,我认为在overflow: hidden
的情况下,它会更多地切断溢出的内容。
但我不是CSS专家,所有这些只是我的猜测,这就是为什么我想把它作为一个问题:)
这是代码
#outer {
background-color: blue;
min-height: 100px;
}
#inner {
background-color: red;
height: 50px;
margin-bottom: 50px;
}
#bottom {
background-color: green;
height: 50px;
}

<div id="outer">
<div id="inner">
</div>
</div>
<div id="bottom">
</div>
&#13;
答案 0 :(得分:1)
这是由margin collapsing
引起的 - 特别是margin-bottom
的inner
折叠成为margin-bottom
元素的outer
<强>解决方案强>:
向border
元素提供outer
以防止边距折叠 - 请参阅下面的演示:
#outer {
background-color: blue;
min-height: 100px;
border: 1px solid blue;
}
#inner {
background-color: red;
height: 50px;
margin-bottom: 50px;
}
#bottom {
background-color: green;
height: 50px;
}
<div id="outer">
<div id="inner">
</div>
</div>
<div id="bottom">
</div>