前置知识: CSS

margin合并与塌陷

2 minIntermediate2026/6/14

margin合并与塌陷

1. margin 合并

当两个垂直外边距相遇时,合并为一个,取较大值。

.box1 {
  margin-bottom: 20px;
}
.box2 {
  margin-top: 30px;
}
/* 实际间距:30px(取较大值),而非 50px */

合并场景

场景示例
相邻兄弟两个 <p> 之间
父元素与首个子元素父 margin-top 与子 margin-top
父元素与末尾子元素父 margin-bottom 与子 margin-bottom
空块元素自身的 margin-top 与 margin-bottom

合并规则

合并后 margin=max(margin1,margin2)\text{合并后 margin} = \max(margin_1, margin_2)

2. margin 塌陷

子元素的 margin-top 传递给父元素。

解决方案

方案CSS说明
父元素加 borderborder-top: 1px solid transparent触发 BFC
父元素加 paddingpadding-top: 1px触发 BFC
父元素 overflowoverflow: hidden触发 BFC
父元素 displaydisplay: flow-root推荐

3. BFC(块格式化上下文)

触发条件:display: flow-rootoverflow: hiddenfloatposition: absolute/fixeddisplay: inline-block/flex/grid

BFC 作用:阻止 margin 塌陷、包含浮动元素、阻止被浮动元素覆盖。