2011-10-12 3 views
4

div要素のマージンを設定していますが、body要素もそのマージンを取得しています。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

これまでのところ私は、body要素にborder:1px solid transparent;プロパティを追加することで問題を解決してきました。 1pxボーダーのためにスクロールバーが表示されるため、これは100%の高さを失います。なぜこれが起こるのですか?

POSSIBLE SOLUTION(助けてくれてありがとう):padding-top:1pxを追加し、margin-top:-1px、このように100%の高さは、スクロールバーを台無しに取得していないし、あなたのアール回避余裕が崩壊。

+0

あなたは何DOCTYPEを使用していますか? – PseudoNinja

+0

<!doctype html> – Rich

+1

ベストソリューションはおそらく@Chris Nicholsonが提供するリンクのように、親に 'overflow:auto;'を追加することです – jamietelin

答えて

2

これは、折りたたみ余白として知られている効果が原因です。

特定の隣接マージンが結合して1つのマージンを形成します。それらのマージンは「崩壊する」と言われています。非空のコンテンツ、パディング、境界領域、またはそれらを分離するクリアランスがない場合、マージンは隣接しています。

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

関連する問題