You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS垂直外边距塌陷问题咨询:为何两元素实际间距为50px而非70px?

为什么相邻块级元素的垂直外边距会塌陷?

嘿,这个问题我刚入门CSS的时候也困惑过好一阵!咱们来拆解一下这个margin collapse(外边距塌陷)的逻辑。

简单来说,垂直方向上相邻的两个块级元素(比如你例子里的h1和h2,默认都是块级元素),它们的上下外边距不会像咱们直觉里那样叠加计算,而是会取两者中数值更大的那个作为最终的间距。

放到你的例子里看:

  • h1的底部外边距是50px
  • h2的顶部外边距是20px

这两个外边距在垂直方向上直接“贴”在了一起,浏览器就会触发外边距塌陷规则,舍弃较小的20px,只保留较大的50px作为两者之间的实际间距,所以最终不是70px而是50px。

顺便说一下,垂直外边距塌陷主要发生在这几种场景:

  • 相邻的兄弟块级元素(就是你遇到的情况)
  • 父元素和第一个/最后一个子元素(如果父元素没有padding、border,也没有inline内容来分隔的话)
  • 空的块级元素(自身的上下外边距会塌陷成一个值)

如果想避免这种塌陷,你可以给其中一个元素加个padding或者border来“隔开”两个外边距,比如给h1加个透明的底部边框:

h1 { 
  margin: 0 0 50px 0; 
  border-bottom: 1px solid transparent; 
}
h2 { margin: 20px 0 0 0; }

这样两个外边距就会正常叠加成70px了。

你的原始代码示例:

h1 { margin: 0 0 50px 0; }
h2 { margin: 20px 0 0 0; }
<h1>Heading 1</h1>
<h2>Heading 2</h2>

内容的提问来源于stack exchange,提问作者Rajadurai M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:26:33