外邊距合并指的是,當(dāng)兩個(gè)垂直外邊距相遇時(shí),它們將形成一個(gè)外邊距。合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。比較淺的規(guī)則詳見:w3schoolCSS外邊距合并。以下皆為這里部分內(nèi)容的引用,其實(shí)是W3C的相應(yīng)規(guī)則的翻譯。margin折疊的產(chǎn)生有幾個(gè)條件:這些margin都處于普通流中,并在同一個(gè)BFC中;這些margin沒有被非空內(nèi)容、padding、border或clear分隔開;這些margin在垂直方向上是毗鄰的,包括以下幾種情況:1、一個(gè)box的topmargin與第一個(gè)子box的topmargin2、一個(gè)box的bottommargin與最后一個(gè)子box的bottommargin,但須在該box的height為auto的情況下3、一個(gè)box的bottommargin與緊接著的下一個(gè)box的topmargin4、一個(gè)box的topmargin與其自身的bottommargin,但須滿足沒創(chuàng)建BFC、零min-height、零或者“auto”的height、沒有普通流的子box垂直方向上毗鄰的box不會(huì)發(fā)生折疊的情況:根元素的外邊距不會(huì)參與折疊一個(gè)有clearance的box的上下margin毗鄰,它會(huì)與緊接著的下一個(gè)box發(fā)生margin折疊,但折疊后的margin不會(huì)再與它們父box的bottommargin折疊折疊邊距的計(jì)算當(dāng)兩個(gè)margin都是正值的時(shí)候,取兩者的最大值;當(dāng)margin都是負(fù)值的時(shí)候,取的是其中絕對(duì)值較大的,然后,從0位置,負(fù)向位移;當(dāng)有正有負(fù)的時(shí)候,先取出負(fù)margin中絕對(duì)值中最大的,然后,和正margin值中最大的margin相加。但必須注意,所有毗鄰的margin要一起參與運(yùn)算,不能分步進(jìn)行。知道了機(jī)制發(fā)生的條件,你應(yīng)該知道如何防止外邊距合并了吧。關(guān)于BFC和haslayout(IE6/7中類似于BFC的概念),詳見hasLayout&&BlockFormattingContexts的3.3節(jié)。