一:什么是margin塌陷
在标准文档流中,竖直方向的margin会出现叠加现象(水平方向不会塌陷),两个margin紧挨着,中间没有border或者padding
margin直接接触,就产生了合并
表现为较大的margin会覆盖掉较小的margin,竖直方向的两个盒子中间只有一个较大的margin,这就是margin塌陷现象
二:margin塌陷的分类
1、兄弟关系的盒子
2、父子关系的盒子
父子关系的盒子塌陷
<div class="onBox">
<div class="underBox"></div>
</div>
</body>
*{
margin: 0;
padding: 0;
}
.onBox{
width: 100px;
height: 100px;
background: cadetblue;
margin-top: 100px;
margin-left: 100px;
/*border-top: 1px solid transparent;*/
/*padding-top: 1px;*/
/*overflow: hidden;*/
/*position: absolute;*/
/*position: fixed;*/
/*display: inline-block;*/
}
.underBox{
width: 50px;
height: 50px;
background: aquamarine;
margin-top: 30px;
margin-left: 30px;
}
理想的结果:子盒子与父盒子有30px的margin

实际结果:父子margin重叠了,用了大的margin(100px)

三:解决方案
- 给父元素添加透明边框,至少添加
border-top:1px solid transparent
- 给父元素添加
padding-top:npx
- 给父元素添加
overflow:hidden
- 给父元素添加
position: absolute;
- 给父元素添加
position: fixed;
- 给父元素添加
display: inline-block;
网友评论