请考虑以下代码:
.container {
min-height: 100px;
background-color: lightgreen;
}
p {
margin-bottom: 50px;
}
<div class="container">
<p>Welcome</p>
</div>
<div class="after">
Main content.
</div>
问题:
MDN的边距折叠页面指出,如果在父元素上设置了min-height,则会防止其底部边距与其最后一个子元素的底部边距相邻-从而防止边距折叠。 对我来说,这很有道理。
父级和第一个/最后一个子级:
如果没有边框,填充,内联部分,创建块格式化上下文或清除以将块的margin-top与其第一个子块的margin-top分隔开,或者没有边框,填充,内联内容,高度,min-height或max- height将块的margin-bottom与其最后一个子元素的margin-bottom分隔开,则这些margin会折叠。 折叠的边距最终会落在父容器外面。
然而,在此示例中,DevTools显示p标记的底部边距在预期位置-直接位于p元素下方-但是容器下方有50px的空白空间,这没有意义。 p标记的边距似乎仍然在某种程度上折叠,最终落在父元素外面,并影响下一个元素的位置,即使p和.container的margin不相邻,并且DevTools显示p标记的margin与.container底部无关。
有人能解释一下为什么边距仍然有点折叠并留下.container下方的空白空间吗? 此外,MDN页面是否错误地声称min-height将防止边距折叠?
谢谢