两个只有边距的空div如何崩溃?

Dja*_*102 5 html css html5 css3

两个只有边距的空div如何崩溃?

html文件:

<div id="div1"></div>
<div id="div2"></div>
Run Code Online (Sandbox Code Playgroud)

CSS文件:

#div1 {
  margin-top: 10px;
  margin-bottom: 20px;
}

#div2 {
  margin-top: 10px;
  margin-bottom: 30px;
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Tem*_*fif 5

答案是:

最后你只有 30px 的边距

您面临两种利润崩溃。由于每个 div 都是空的,它的上边距和下边距将会折叠,因此对于第一个 div,我们将拥有20px,而对于第二个 div,我们将拥有30px。那么这些边距也会一起崩溃,最终只会30px

您可以通过检查 html 元素的高度来验证这一点,您将看到以下内容:

#div1 {
  margin-top: 10px;
  margin-bottom: 20px;
}

#div2 {
  margin-top: 10px;
  margin-bottom: 30px;
}
Run Code Online (Sandbox Code Playgroud)
<div id="div1"></div>
<div id="div2"></div>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

规格来看

盒子的顶部和底部边距,不建立新的块格式上下文,并且计算的“最小高度”为零,计算的“高度”为零或“自动”,并且没有流入子项

盒子的底部边距和其下一个流入的同级的顶部边距


附带说明一下,正文还有一个默认边距 ( 8px),它与遵循此规则的其他边距折叠:

框的上边距及其第一个流入子项的上边距

最后一个流入子级的底部边距及其父级的底部边距(如果父级具有“自动”计算高度)