CSS–外边距折叠现象及解决方案
1.合并现象
场景:垂直布局的块级元素,上下的margin会合并。
<style>
div {
width: 100px;
height: 100px;
background-color: pink;
}
.one {
margin-bottom: 60px;
}
.two {
margin-top: 50px;
}
</style>
</head>
<body>
<div class="one">11</div>
<div class="two">22</div>
</body>
结果:最终两者距离为margin最大值。
解决方案:避免就好。
只给其中一个盒子设置margin。
2.坍塌现象
场景: 互相嵌套的块级元素,子元素的margin-top会作用在父元素上。
<style>
.father {
width: 300px;
height: 300px;
background-color: pink;
/* padding-top: 50px; */
/* border: 1px solid #fff; */
/* overflow: hidden; */
}
.son {
width: 100px;
height: 100px;
background-color: skyblue;
margin-top: 50px;
/*float:left;*/
/* display: inline-block; */
}
</style>
</head>
<body>
<div class="father">
<div class="son">son</div>
</div>
</body>
结果:导致父元素一起往下移动。
解决方案:
1.给父元素设置border-top或padding-top(分隔子元素的margin-top),设计中需减去border,padding的距离。
2.给父元素设置overflow: hiden。
3.转换成行内块元素。
4.设置浮动。