margin塌陷

margin塌陷

margin塌陷发生在下列两种情况中

1.垂直并列

/*HTML部分*/
<body>
  <div class="box1">box1</div>
  <div class="box2">box2</div>
</body>
/*CSS部分*/
<style> 
  *{
       margin: 0; 
       padding: 0; 
  }
   .box1{ 
       width: 200px; 
       height: 200px; 
       background: yellowgreen;
   } 
  .box2{ 
       width: 200px; 
       height: 200px; background: gray; 
  }
</style>

对box1我们为其设置margin-bottom:50px;对box2我们为其设置margin-top: 40px;
我们肯定会很理所当然的认定这两个盒子之间的距离为90px,事实上并非如此.如下图所示:


两盒子之间的距离仅是50px,也就是说两盒子之间的margin出现了重叠部分,故而我们可以得出:垂直之间塌陷的原则是以两盒子最大的外边距(margin)为准。

2.嵌套关系

/*CSS部分*/
<style>
.box1{
  width:400px;
  height:400px;
  background: pink;
}
.box2{
  width:200px;
  height:200px;
  background: lightblue;
}
</style>
/*HTML部分*/
<body>
  <divclass="box1">
  <divclass="box2"></div>
</div>
</body>

如图示


当为子盒子添加margin-top:10px;时会发生如下情况:


子盒子和父盒子之间并没出现期望的10px间隙而是父盒子与子盒子一起与页面顶端产生了10px间隙。

解决方法:
(1)为父盒子设置border,为外层添加border后父子盒子就不是真正意义上的贴合。
(2)为父盒子添加overflow:hidden;
(3)为父盒子设定padding值。

了解下BFC(Block Fommat Content)块级格式上下文,就能很清楚的避开这些坑
了解BFC

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 塌陷问题 当两个盒子在垂直方向上设置margin值时,会出现一个有趣的塌陷现象。 垂直并列(少见) /HTML部分...
    饥人谷_米弥轮阅读 3,074评论 1 0
  • margin 塌陷问题 在标准文档流中,块级标签之间竖直方向的margin会以大的为准,这就是margin的塌陷现...
    你期待的花开阅读 576评论 6 10
  • 1.在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 概念:在CSS当...
    饥人谷_任磊阅读 725评论 0 3
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,841评论 1 92
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 989评论 0 2