8

我有以下腳本,其中的邊距。 portlet類是行爲異常:爲什麼10px + 10px = 10px?

http://jsfiddle.net/mYx5y/19/

應該圍繞每個portlet,這應該意味着的20像素的portlet之間的間隙被增加10px的。出於某種原因,如果一個portlet在其本身的右側或左側有一個小部件,我只能獲得20px,但如果portlet具有另一個portlet在其之上或之下,則只有10px。

爲什麼我要垂直獲取10px?

回答

11

由於利潤率不會加起來,它們會崩潰。如果您有兩個元素A和B,A margin = 10px,B margin = 15px,則A和B之間的間距將爲15px。

兩個解決方案:

  1. 使用邊距:20像素,上邊距:0像素
  2. 總結他們到一個容器和應用填充:10px的0;
7

因爲利潤率崩潰,所以不會被添加,只需要max() -ed(將使用相鄰對象的最大利潤率值)。如果空格是元素的一部分,請使用填充。

+0

所以利潤率只有垂直坍塌,而不是水平? – oshirowanen 2011-03-14 11:05:20

+0

我很確定他們也在水平上做同樣的事情。但是你可以在你的sitebuild中使用很多技巧來實現多列結構。如果它們沒有水平摺疊,那麼seset可能位於其他html標籤,css中。 – vbence 2011-03-14 11:07:57

+2

從http://www.w3.org/TR/CSS21/box.html#collapsing-margins - 「在CSS 2.1中,水平頁邊距永不合攏。」 – Kobi 2011-03-14 11:09:04

5

這是利潤率如何工作。相鄰的垂直邊界互相摺疊:

在正常流動崩潰中,兩個或多個鄰接垂直邊界的塊級盒子。最終的邊距寬度是相鄰邊距寬度的最大值。在負邊界情況下,負邊界的絕對值的最大值從正邊界的最大值中扣除。如果沒有正邊距,則負邊距的絕對最大值從零中減去。注意。相鄰的框可能由與兄弟姐妹或祖先不相關的元素生成。

參見:Collapsing margins

相關問題