探讨margin-top的bug
当两个容器嵌套时,如果外层容器和内层容器之间没有别的元素,那么作用于内层元素的margin-top会作用于外层容器。
首先我们来看下代码和效果图:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<title>margin-top</title>
<style>
div{
width:150px;
height:150px;
}
.d1{
background-color:red;
}
.d2{
background-color:yellow;
margin-top:20px;
}
.d3{
width:100px;
height:100px;
background-color:blue;
}
</style>
</head>
<body>
<div class="d1"></div>
<div class="d2">
<div class="d3">
</div>
</div>
</body>
</html>
当我们给d3添加margin-top:50px时发现:
.d3{
width:100px;
height:100px;
background-color:blue;
margin-top:50px;
}
由效果图可看出蓝色区域并没有与黄色区域产生50px的间距,而是作用于外层容器了
那么遇到这种问题,我们能怎么解决呢?
方法一、给外层容器加外框,颜色可设置为原背景色。
.d2{
background-color:yellow;
margin-top:20px;
border:1px solid yellow;
}
方法二、让内层容器浮动起来,也可实现效果。
.d3{
width:100px;
height:100px;
background-color:blue;
margin-top:50px;
float:left;
}
方法三、在外层容器里加padding-top:50px;效果可实现,但会改变外框高度,需重新计算高度(所以不推荐这种方法)。
.d2{
background-color:yellow;
margin-top:20px;
padding-top:50px;
}
版权声明:本文为weixin_39946352原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。