问题一:嵌套块垂直外边距塌陷
当父元素没有padding,border时子元素与父元素之间相邻,设置margin值会发生合并,取绝对值较大值。
解决办法:
1.给父元素设置边框或border
2.给父元素overflow:hidden
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding:0}
.wrap{
width:600px;
height:600px;
background-color: red;
margin-top:30px;
/* 方法一: */
/* border-top: 1px solid pink; */
/* 方法二: */
/* padding-top:1px; */
/* 方法三: */
overflow:hidden;
}
.inner{
width:200px;
height:200px;
background-color:green;
margin-top:50px;
}
</style>
</head>
<body>
<div class="wrap">
<div class="inner"></div>
</div>
</body>
</html>
问题二:相邻元素垂直外边距合并
当两个块级兄弟元素垂直方向margin值相遇时会发生合并,结果取绝对值较大值
解决方法:
1.尽量给其中一个设置margin值
2.给其中一个盒子加父元素,设置overflow:hidden
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding:0}
.wrap1{
/* border:1px solid red; */
overflow: hidden;
}
.box1{
width:200px;
height:200px;
background-color:red;
margin-bottom:20px;
}
.box2{
width:200px;
height:200px;
background-color:aqua;
margin-top:20px;
}
</style>
</head>
<body>
<div class="wrap1">
<div class="box1"></div>
</div>
<div class="box2"></div>
</body>
</html>