CSS 2.1 では、箱の位置や大きさの多くは包含ブロックと呼ばれる矩形の箱の辺に対して計算します。通常、生成された箱は子孫の箱の包含ブロックとして働きます。これを、箱がその子孫の包含ブロックを確立するといいます。
箱の包含ブロックという言葉は、その箱が存在する包含ブロックを意味します (その箱が生成する包含ブロックではありません)。各箱はその包含ブロックに対しての位置が与えられますが、包含ブロックによってその位置が制限されるわけではありません。溢れることがあります。
CSS 2.1 9.1.2
[15] 包含ブロックは次の通り定められています。 CSS 2.1 10.1
[16] 逆の見方では、
fixed
な箱の包含ブロックとなります。position: fixed
な箱は新しい包含ブロックを確立します。position: relative
な要素が生成する箱全体を包み込む箱は新しい包含ブロックを確立します。<margin-width>
, <padding-width>
の値 <percentage>
margin-top
, padding-bottom
でも。)
に対する値です。ただし、包含ブロックの幅がその要素自身に依存する場合の配置は未定義です。
CSS 2.1 8.3, 8.4<percentage>
は包含ブロックの高さ
(top
, bottom
)
や幅 (right
, left
) に対する値です。
CSS 2.1 9.3.2
top
などの包含ブロックがブロック水準要素に由来する場合、
padding辺からの距離とみなされます。
CSS 2.1 9.3.2 Notewidth
, min-width
, max-width
の値 <percentage>
min-width
, max-width
で包含ブロックの幅が負の時は、
使用値は 0 です。 CSS 2.1 10.4
包含ブロックがブロック水準要素に由来する場合、
padding箱の幅を使って計算します。 CSS1 では内容箱でした。
CSS 2.1 10.2 Noteheight
, min-height
, max-height
の値 <percentage>
auto
/none
/0
が算出値です。
CSS 2.1 10.5, 10.7text-indent
の値 <percentage>
left
と right
の両方が指定されていて矛盾する時
(「制約が強すぎる時」)、どちらが使われるかは
包含ブロックの direction
により決まります
(ltr
なら left
が勝ちます)。
CSS 2.1 9.4.3direction
により決めます。 CSS 2.1 9.10height
と
width
の算出値が共に auto
で、
(3) 要素が内在比率を持ち、 (4) 内在高や内在幅は持たず、
(5) 包含ブロックの幅がその要素の幅に依存しない場合、
width
の使用値は通常フローのブロック水準非置換要素と同じ等式により決定します。
CSS 2.1 10.3.2[13] スタック付け文脈と包含ブロックは必ずしも一致しません CSS 2.1 9.9.1。
[21] ある要素に対する overflow
によってくりぬかれる対象となるのはその要素の子孫ですが、
子孫であっても、
は対象外となります。 CSS 2.1 11.1.1