margin-top塌陷问题

margin-top塌陷是怎么回事呢?

两个盒子嵌套的时候,内部盒子的margin-top会加到外面的盒子上面,导致盒子的margin-top塌陷。这是一个系统级别的bug.

解决的办法有:

1.给盒子加上一个边框,缺点是盒子会有一个边框影响美观

2.外部盒子设置overflow:hidden;缺点是当盒子里面的元素溢出的时候,会裁剪掉盒子里面的内容。

3.使用伪元素方法(最优的方法):这个方法的原理至今没弄懂,为啥加上一个伪元素和一个display:table就可以解决了呢???

.clearfix:before{

  content:"";

  display:table;

}

 

 

代码如下:

<!DOCTYPE html>
<html>
<head>
<title>margin特性</title>
<style type="text/css">
.con{
width: 300px;
height: 200px;
background-color: gold;
/*设置盒子居中的方法:padding或者margin
width: 100px;
height: 100px;
padding: 50px 100px;*/

/*利用margin来居中会出现margin-top塌陷的问题;解决margin-top塌陷的方法一:加外边框;但是会加上一个边框
width: 298px;
height: 198px;
background-color: gold;
border:1px solid red;*/

/*解决margin-top塌陷第二种方法
overflow: hidden;*/
}

.box{
width: 100px;
height: 100px;
background-color: green;
margin:50px 100px;
}

.clearfix:before{
content: "";
display: table;
}
</style>
</head>
<body>
<div class="con clearfix">
<div class="box"></div>
</div>
</body>
</html>

posted on 2020-02-09 10:09  smileBB  阅读(711)  评论(0编辑  收藏  举报