标签:element 设置 border bsp 分析 pad 外边距 psi ast
最开始学前端就听过“外边距折叠”这一专业名词,可是什么条件下会发生外边距折叠,后来有了说法,叫“只有处于同一个BFC的外边距会发生折叠(什么是BFC不在这节做讨论)”,那是不是只有这一种条件下外边距才不折叠呢?
研究css2.2中的box model关于Collapsing margins的讲解。
标准中,对外边距折叠是这么说的:
Adjoining vertical margins collapse, except:
只有垂直的相邻的外边距会产生折叠,除了上述三种情况(分析在后)。
垂直好理解,就是margin-top和margin-bottom,那么什么是相邻的margin呢?
标准中又有了解释:
要判断两个margin是否能够被称之为相邻,必须同时满足下边三个条件
1.两个外边距都属于流中的块级元素,并且处在同一个BFC中。这里不一定就是兄弟元素,父子元素也一样。
2.这两个外边距没有被行内盒子line-boxes、间隙clearance、内边距padding、边border分隔开。说白了就是两个边距之前没有任何其他东西。
3.这两个边距都必须属于垂直相邻的盒子外边距,分别属于以下四种情况中的一种:(1)父元素的top margin和该元素的第一个子元素。(2)元素的bottom margin和它紧邻的后一个兄弟元素的top margin。(3)元素的height为auto(就是不对高度进行设置)时,它的bottom margin和该元素内最后一个子元素的bottom margin。(4)元素内部没有任何子元素,高度设置为0或者auto,min-height的计算值为0,且自己并没有形成新的BFC,这种条件下该元素的top margin和bottom margin
标签:element 设置 border bsp 分析 pad 外边距 psi ast
原文地址:http://www.cnblogs.com/weislywang/p/5747385.html