最近在写项目的过程中,遇到了CSSBoxModel中collapsingmargin的情况。做一个整理总结,方便以后忘记的时候参考,也供网友们参考。如有错误或总结不全,请指出。margincollapsing的概念:所谓margincollapsing就是将两个或多个相邻元素(有子元素)的margin在垂直方向合并为一个margin。CSS盒模型中有两种常见的margincollapsing情况:情况一、没有子元素的相邻兄弟元素触发margincollapsing条件:当两个元素没有被其他非空元素隔开时触发collapsedmargins。情况说明:1)如果两个元素的margin都是正的,那么两个元素之间的margin=max(margin1,margin2);附图说明:2)如果两个元素的margin都是负数,则两者之间的margin=min(margin1,magin2),如图2所示;附图说明:3)如果两个元素其中一个为正值,一个为负值,则两个元素之间的margin=margin1+margin2,如图3margin=-50px+25px=-25px;case2,子元素和父元素之间发生margincollapsing触发条件:父元素没有border,没有padding,父元素和子元素之间没有非空元素或者文本信息(没有子元素顶部和父元素顶部之间的非空元素文本信息,子元素底部和父元素底部之间可能有非空元素和文本信息),基线折叠是父元素的顶部或底部边缘。场景说明:1)如果父元素和子元素的margin值都为正,则折叠后的margin=max(margin1,margin2),如图4。附图说明:2)如果父元素和子元素的margin值都是负数,则折叠后的margin=min(margin1,margin2),如图5所示。3)如果父元素和子元素的margin之一为一个为正值,一个为负值,则折叠后的margin=minmargin1+margin2,如图6所示。
