HTML部分:嵌套两层div
代码语言:javascript复制<div class="box">
<div class="inner">
margin击穿
</div>
</div>
style/css部分:给元素设置宽高和背景,便于观察,给内部的自元素设置一个 100px 的上边距。
代码语言:javascript复制.box{
margin: 0 auto;
background: red;
width: 500px;
height: 300px;
}
.inner{
margin-top: 100px;
background: green;
color: #FFF;
width: 200px;
height: 100px;
}
我明明只设置了子元素 .inner 的 margin 值,结果这个 100px 的 margin-top 却作用在了父元素 .box 上,运行结果如下图,这就是所谓的margin击穿。
margin 击穿就是两个元素嵌套,哪个 margin 较大则哪个生效。
解决 margin 击穿的方法有以下几种:
1、给父元素加一个边框
代码语言:javascript复制.box{
1px solid #000;
}
缺点:会多一个边框,不可取。
2、在父元素添加 overflow:auto; (推荐) 或者 overflow:hidden;
代码语言:javascript复制.box{
overflow:auto;
}
3、给子元素设置 display:inline-block;
代码语言:javascript复制.inner{
display:inline-block;
}
4、给子元素设置浮动再清除浮动,太麻烦,不推荐。
代码语言:javascript复制.inner{
float:laft;
}
.box::after{
content: '';
display: block;
clear: both;
}