这桌有如下几道菜,喜欢请拿走哟。

1、重叠发生的机制
2、border和padding如何阻止了重叠
3、重叠解决方案

 

**重叠发生的常见情况**
1.元素互为相邻关系
2.元素互为包含关系(父子关系)

**重叠发生的机制**
无论是相邻关系还是包含关系,重叠发生依赖于两个元素的margin能够相互接触到!!相互触碰到!相互摩擦!

**相邻关系**

<div class="man" style="width:400px;height:100px;background:red;margin-bottom:100px;"></div>
<div class="brother" style="width:400px;height:50px;background:#af3;margin-top:50px;"></div>

clipboard.png
如果添加border或者padding还会发生重叠吗?答案是肯定的。

<div class="man" style="width:400px;height:100px;background:red;margin-bottom:100px;border-style:solid;"></div>
<div class="brother" style="width:400px;height:50px;background:#af3;margin-top:50px;border-style:solid;"></div>

clipboard.png

不论如何设置padding或者border,对于相邻元素来说,它们的margin都能互相接触!!!!!所以会发生重叠。

**包含关系**

<div style="width:400px;height:400px;background-color:blue;">
<div style="width:200px;height:200px;margin-top:100px;background-color:red;"></div>
</div>

注意,这时候border,padding都是0.父元素的margin和子元素的margin能够相互接触到。

clipboard.png

如果给父元素加个padding或者border,那么子元素的margin就无法接触到父元素的margin了。因此也无法发生重叠了!这里以border为例。

<div style="width:400px;height:400px;background-color:blue;border-style:solid;">
<div style="width:200px;height:200px;margin-top:100px;background-color:red;"></div>
</div>

clipboard.png

如果给子元素添加border或者padding是不起作用的。

**外边距重叠的解决方式**
1.创建BFC(BFC是个坑,以后再聊吧)
2.避免margin的亲密接触。

 

posted on 2016-01-17 10:09  Mr_.White  阅读(598)  评论(0编辑  收藏  举报