2013-02-05 29 views
6

讓我們假設我們有下面的代碼:CSS邊距加起來還是加起來?

<div style="margin-bottom:100px;">test</div> 
<div style="margin-top:100px;">test</div> 

我注意到,有時它創建元素之間的保證金100像素,有時是200像素(當我們使用的是我不熟悉的某些設置)。我無法在規範中找到任何關於此的信息。這取決於什麼?

如果我們在空白文檔中有h1p,則h1的保證金將與p的保證金相結合。他們不會加起來。無論哪個更大將被使用。

+0

他們看起來是一樣的我:http://jsfiddle.net/s7bWq/ – ashley

+0

我對此有點模糊,但我認爲這就是瀏覽器應該做的。也就是說,使用兩個邊界中較大的一個。可能是瀏覽器的具體情況,但我不確定... –

+0

DIV始終會創建200px的保證金。但'h1' +'p'會將它們組合到100px。這需要在空白文檔中進行測試。 – Atadj

回答

12

發生這種情況是因爲您的利潤率允許摺疊。某些邊距可能會重疊(主要是塊單元),並形成由計算出的元素樣式規則中定義的兩個值中較大的一個來定義的組合邊距 - 這就是發生的情況。 This sectionCSS Box Model文件詳細解釋它。

編輯:作爲興趣點,你可以在幾個方面

  • 解決這個問題沒有打破的東西製作的元素(即打破了可摺疊的利潤。)(?) width: 100%; display: inline-block
  • height: 0; width: 0; overflow: hidden塊放在元素之間並在其中放置一個點或其他東西。

我分叉阿什利的fiddle來演示。可能還有其他方法,但如果需要的話,這些方法可能是一種骯髒的方式來解決可摺疊的邊距問題。

+1

在大型網站中經常會丟失的東西是線條高度。如果將其設置爲小於元素的渲染高度,則可以通過這種方式減少邊緣的一些像素 – DMTintner

+0

這正是我一直在尋找的內容:)它比僅使用它的標準屬性更復雜也許這就是爲什麼很難找到這個。 – Atadj