如下代码:
会发现,内层div的margin-top显示在了外层div上。
这个“问题”……它是CSS2.1的盒模型中规定的内容——:
In this specification, the expression collapsing margins means that adjoining margins (no non-empty content, padding or border areas or clearance separate them) of two or more boxes (which may be next to one another or nested) combine to form a single margin.
所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、Padding或Border分隔。
解决方案:
给 Outer Div 加上 padding/border,或者
1.给父层添加:overflow:hidden;
2.给父层添加:padding 或 border除none以外的属性
3.给父层添加:padding-top代替margin-top的效果。
4.给 外层 Div / 内层 Div 设置为 float/position:absolute(CSS2.1规定浮动元素和绝对定位元素不参与Margin折叠)。