2011-08-17 8 views
5

この例を参照してください: http://jsfiddle.net/FrJRA/1/ と、内部スパンの境界が包含divと重なっていることに注意してください。スパンパディングがレンダリングボックスをその親とオーバーラップさせるのはなぜですか?

私は何が起こっているのか理解しています。しかし、なぜ私は理解していない。 spanの新しい高さを考慮してdivのサイズを増やさないのはなぜですか?

display: inline-block私はこれを実現したいと思っていますが、inlineの背後にある理由は親コンテナのサイズを増やすことができません。

+0

あなたのURLを

div, span { border: 1px solid gray; } 

を修正するためにあなたが探している機能がある場合

は少し間違っています。そのはず。 http://jsfiddle.net/FrJRA/1 – scottheckel

+0

ありがとうございます!一定。 –

+0

"なぜdivのサイズが大きくなっていないのですか"なぜそれが必要ですか? – BoltClock

答えて

7

インライン要素は、左/右の寸法のパディングの寸法のみを変更します。これは、要素の上下方向の寸法を増加させません。だからこそ、あなたはそれを側面ではあるが上端/下端ではないことに気づくのです。

更新: これに触れるW3仕様の部分が見つかりました。

インラインの垂直パディング、ボーダーやマージン、非置き換えボックス、コンテンツ領域の上部と下部に 開始し、「行の高さ」で を何の関係もありません。しかし、ラインボックスの高さを計算するときは、 'line-height'のみが使用されます。 CSS 2.1 Spec

+4

すてきな視覚的説明http://www.maxdesign.com.au/articles/inline – BoltClock

3

インライン要素はレイアウトに影響しないため、blockまたはinline-blockinlineスパンになりません。

+0

しかし、レイアウトには影響しません。彼らは親の幅にちょうど良い影響を与えます。彼らのマージンは追加されます。彼らの詰め物だけじゃない...? –

+0

六角形の説明が優れています。インライン次元が部分的に変更される理由はわかりませんが、ブロックレベルの要素に影響を与えることではないという理論だけがわかります。しかし、あなたは正しい:現実は、2人が何らかの形で相互作用することを主張している。 –

+0

特殊な場合(浮動小数点数と絶対配置された要素に 'width'と表のセルの内容がない場合を除く)を除いて、それらは親の幅には影響しません。 – bobince

0

<div>はこの場合サイズを変更することを意図していません。 <span>はインライン要素です。それはoverflow:auto;

div, span { 
    border: 1px solid gray; 
    overflow:auto; 
} 
+0

これは間違った方向に向かっています - divはそれ以上大きくはないだけでなく、スクロールバーもあります。 –

関連する問題