Margin的計算主要涉及到CSS中的外邊距摺疊規則,具體包括以下幾點:
外邊距摺疊:當兩個或多箇盒子的相鄰margin相遇時,它們會合併成一箇margin。這種合併稱爲margin的重疊。重疊後的margin寬度是參與重疊的margin寬度中的最大值。如果涉及到負margin,則從正相鄰margin的最大值中減去負相鄰margin的絕對值的最大值。如果沒有正margin,則使用0減去相鄰margin的絕對值的最大值。
外邊距摺疊的具體情況:
一箇盒子的top margin和它的第一個流內子級的top margin。
一箇盒子的bottom margin和它的下一個流內後面的兄弟的top margin。
最後一箇流內子級的bottom margin和它的父級的bottom margin,如果父級的高度的計算值爲'auto'。
一箇盒子的top和bottom margin,該盒沒有建立一箇新的塊格式化上下文並且min-height的計算值爲0,height的計算值爲0或者'auto',並且沒有流內子級。
外邊距摺疊的計算規則:
當所有margin均爲正值時,取margin中的最大值。
當margin中正負值都存在時,先取出負margin中絕對值最大的,然後,和正margin值中最大的margin相加。
特殊情況:根元素的盒子margin不會發生重疊,因爲根元素雖然是塊級盒,但不是流內元素。
綜上所述,Margin的計算涉及到外邊距摺疊的規則,包括正負值的處理和特殊情況的考慮。