2012-11-13 50 views
1

我在"Fiddle"中的代碼顯示我有相鄰的元素,其中的垂直邊距互相摺疊。我明白,由於CSS中垂直邊距的性質,選擇兩者中最大的一個,在我的例子中是p標籤。爲什麼我的利潤率還在崩潰?

我遇到的麻煩是試圖通過使用1px邊框或1px填充來打破邊距。我已經看到它與其他解決方法(如position:absolutefloat方法)一起工作。我不明白爲什麼使用1px邊框或填充不能正常工作以給我15px的空間。

回答

2

有一些技巧可以防止邊緣的塌陷。你說他們中的兩個:絕對位置和浮動。另外,您可以使用display: inline-block作爲您的p標籤。在this guide我發現只有嵌套元素的邊框和填充的解決方案。當然,你可以使用真正的大邊框,而不是邊距:)

+0

所以你說填充只適用於嵌套元素? –

+0

@BrandonDorsey我試圖讓它在一些變化中起作用。我認爲1px填充不適用於你的情況。但也許有人知道真正的技術。 –

+0

將div顯示爲內聯塊有助於實現20px的邊際間距。在這種情況下,您的權利1px邊框不起作用。它只適用於元素嵌套。 –

-1

爲了讓他們的旁邊顯示對方的變化如下:

p { 
    margin-bottom: 10px; 
    display:inline; 
} 

div { 
    padding: 1px; 
    margin-top: 5px; 
    display:inline; 
}​ 
+0

OP不希望彼此相鄰顯示 –

+0

@ZoltanToth正是如此。 –

0

您是否想要使用邊框或背景上無論是P或DIV?如果沒有,請在一種或兩種樣式中使用填充。填充不會像邊距那樣崩潰。

p { 
    padding-bottom: 10px; 
} 
div { 
    padding: 1px; 
    margin-top: 5px; 
}​ 

如果你包括邊框或背景,使用填充可能不會給你要的,因爲邊界是填充外和背景包括填補區域的樣子。

+0

最後我會遇到一種情況,我必須使用bg,並且我想知道如何通過使用邊框或填充來解決此問題。 –

+0

嗯,這只是一個問題,如果你需要兩個元素的邊框或背景。例如,如果它只是div,請使用div上的邊距和p上的填充。 – kinadian

+0

還有其他方法。您可以使用浮動和清除,溢出或定位。這些時間的解決方案可能會或可能不會工作,具體取決於您的頁面佈局。這裏有一篇很好的文章:http://www.seifi.org/css/understanding-taming-collapsing-margins-in-css.html。 – kinadian