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

为何为父div添加border后才会包裹子元素的margin?

为什么父元素添加border后才会包裹子元素的margin?

这个现象是CSS标准的**margin塌陷(Margin Collapsing)**行为:

  • 当父元素没有border、padding,且overflow为默认的visible时,子元素的上下margin会和父元素的margin合并。这里父元素默认margin为0,子元素的margin-top:50px就会“溢出”到父元素外部,看起来父元素没包裹这个margin。
  • 给父元素加上border后,相当于在父元素边界和子元素margin之间加了一层分隔,直接打破了margin合并的条件。此时子元素的margin被限制在父元素内部,父元素自然就包裹住了这个margin。

无border时的代码示例

.parent {
  background-color: red;
  width: 100px;
  /* border: solid 5px black; */
}

.child {
  margin-top: 50px;
  width: 100px;
  height: 100px;
  background-color: green;
}
<html>
  <head></head>
  <body>
    <div class="parent">
      <div class="child"></div>
    </div>
  </body>
</html>

有border时的代码示例

.parent {
  background-color: red;
  width: 100px;
  border: solid 5px black;
}

.child {
  margin-top: 50px;
  width: 100px;
  height: 100px;
  background-color: green;
}
<html>
  <head></head>
  <body>
    <div class="parent">
      <div class="child"></div>
    </div>
  </body>
</html>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:52:34