2012-01-04 10 views
2

問題:なぜマージンがCSSのインラインブロックとブロック要素に違うのですか?

要素display: inline-block;では、マージンは、両方のインスタンスmargin-top: 30px;のために設定されている場合でもdisplay: block;を持つ要素とは異なるマージンを持つことになります!

margin-topは、インラインブロックを持つ要素に適用されますが、ブロックを持つ要素とまったく同じではありません。差異のあるピクセルがあります。どうして?要素タグはスペースなしで次お互いに配置されていない場合

+0

どのブラウザでテストしていますか? – Viruzzo

+0

直接的な答えではありませんが、この記事はいくつかの光を放つかもしれません:http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/ –

+2

問題が発生する可能性のある最小限の文書など、詳細を記入してください。問題は簡単なテストでは観察できず、ページ上の他のものと関連している可能性があります。 (マージンのように見えるものは他にもあるかもしれません) –

答えて

7

インラインブロック要素のマージンが崩壊しないということですが、ブロック要素では崩壊します。 The Box model page goes over this really well

だから崩壊マージンとは何ですか?下部に10ピクセルの余白を持つ要素と、上部に5ピクセルの余白を持つ要素があるとします。 2つの間のマージンは15ではありませんが、2つのうち最大のもの(10ピクセル)に縮小されます。

+0

これはおそらくそれです。 – thirtydot

+0

ありがとうございました!これは確かに答えでした。ヘッダー要素の上に「margin-bottom:0.5em;」があったからです。私がそれを削除したとき、以下の要素は 'inline-block'または' block'のいずれかに設定されていると完全に揃えられました。 – Magne

+0

ようこそ。私がトップマージンを読むとすぐに、それはそれであると思った。 – scottheckel

1

インラインブロックは、デフォルトでは、それらの間のパディング、(スペースの大きさ、幅がそれほど1EM)を持っている:

<element></element><element></element> 

は大丈夫だろう次のようにはなりません。

<element></element> 
<element></element> 

ブロックにはこの問題はありません。そのため、ブロックが異なるようです。これは、埋め込みにインラインのデフォルトを追加します。

これを解決するには、親のfont-sizeを0に設定するか、余分なパディング幅を希望の幅から差し引くことができます。

+0

質問に「margin-top」が書かれているので、これはできません。 – thirtydot

関連する問題