magin重叠

一、两个div之间的magin 重叠

当一个元素出现在另一个元素上面时,第一个元素的底边界与第二个元素的顶边界发生叠加,见图:

magin重叠_第1张图片


上下相邻的普通元素,上下的外边距,不止简单的相加,而是取其中较大的边距


二、父子div之间的magin重叠

当一个元素包含在另一个元素中时(假设没有填充或边框将边界分隔开),它们的顶和/或底边界也发生叠加,见图:

magin重叠_第2张图片

这个“问题”……它是CSS2.1的盒模型中规定的内容——Collapsing margins

所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、Padding或Border分隔。

这就是原因了。“嵌套”的盒元素也算“毗邻”,也会 Collapsing Margins。这个合并Margin其实很常见,就是文章段落元素

,并列很多个的时候,每一个都有上下1em的margin,但相邻的

之间只会显示1em的间隔而不是相加的2em。

这个问题的避免方法很多,只要破坏它出现的条件就行。

解决方法: 
1、修改父元素的高度,增加padding-top样式模拟(padding-top:1px;常用) 
2、为父元素添加overflow:hidden;样式即可(完美) 
3、为父元素或者子元素声明浮动(float:left;可用) 
4、为父元素添加border(border:1px solid transparent可用) 
5、为父元素或者子元素声明绝对定位


你可能感兴趣的:(magin重叠)