初始测试代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
.con1 {
background-color: seagreen;
width: 600px;
height: 600px;
}
.con2 {
background-color: burlywood;
width: 400px;
height: 400px;
}
.con3 {
background-color: #20c997;
height: 200px;
width: 200px;
}
</style>
</head>
<body>
<div class="con1">
<div class="con2">
<div class="con3"></div>
</div>
</div>
</body>
</html>
初始效果如下:
当我们给con3设计一个margin-top: 30px;时,效果却不是我们想要的,呈现的是con1相对的效果,为什么呢?
这是因为,当父容器没有设计padding-top的值或padding-top的值为0时,子容器的margin-top的效果就会层层上叠到父容器上,如con3---con2---con1,所以就如上图所示。
两种修改方法如下:
(1)给父容器增加padding-top的值:
padding-top:1px;
(2)给父容器增加overflow样式:
overflow:hidden;
这样margin-top的效果就恢复正常了: