2011-10-12 86 views
4

我爲div元素設置了一個邊距,但body元素也獲得了這個邊距。CSS邊緣推動身體元素

考慮以下代碼:

<!-- HTML --> 
<body> 
    <div> 
    </div> 
</body> 

<!-- CSS --> 
<style> 
    html,body { 
    height:100%; 
    margin:0; 
    padding:0; 
    outline:1px solid blue; 
    } 

div { 
    margin:20px; 
    outline:1px solid red; 
} 

</style> 

這是結果和問題: http://i54.tinypic.com/29ve1zl.jpg

到目前爲止,我已經加入了border:1px solid transparent;屬性body元素解決了這個問題。這會破壞100%的高度,因爲由於1px邊框會出現滾動條。爲什麼會發生?

可能的解決方案(感謝您的幫助):添加padding-top:1pxmargin-top:-1px,這樣一來100%的高度不得到與滾動條和您的保證金,避免崩潰毀了。

+0

您正在使用哪種DOCTYPE? – PseudoNinja

+0

<!doctype html> – Rich

+1

最好的解決方案可能是像在@Chris Nicholson提供的鏈接中指出的那樣,在父級上添加'overflow:auto;' – jamietelin

回答

2

這是由稱爲摺疊邊距的效應引起的。

某些相鄰邊距合併形成一個邊距。這些邊際被認爲是「崩潰」。如果沒有非空的內容,填充或邊界區域或空格來分隔它們,邊距就是相鄰的。

http://www.w3.org/TR/css3-box/#collapsing-margins