CSS3 Line

行 (CSS)

[4] 行内書式付け文脈において行内箱水平方向に順に配置され、 (line) を形成します。 この時、1つのを形成する行内箱を含んだ矩形の領域 (rectangular area) のことを行箱 (line box) といいます。

仕様書

レンダリング

水平方向

幅と左右の位置

[5] 行箱 (width) 包含ブロックと、浮動 (float) が存在するか否かによって決まります。 >>3

[10] 左辺 (left edge) 包含ブロック左辺に接します。 右辺 (right edge) 包含ブロック右辺に接します。 ただし、浮動箱 (floating box) 包含ブロック行箱の間に入ることもあります。 >>3

ですから、同じ行内書式付け文脈にある行箱は通常はすべて同じで、包含ブロックと同じになるわけですが、 浮動 (float) によって利用可能な水平方向の空間が限られているなら、 行幅同士で変わってくることもあります。>>3

字揃え

[13] 内の行内箱の和が行箱よりも小さい時には行箱の中身の水平方向の分布は 'text-align' 特性によって決まります。 'justify' なら利用者エージェント行内箱 (行内表箱 (inline-table box) 行内ブロック箱 (inline-block box) を除きます。) の中の間隔 (space) (word) 伸長 (stretch) して構いません>>3 'left' ならに、 'right' ならに詰めて配置されます。

垂直方向

高さ

[12] 行箱包含ブロック (top) から順に並べられます。

[6] 行箱高さ (height) は、

...

[7] 行箱高さはそれに含まれるのいずれよりも大きいです。 各高さ行箱より小さい時の垂直方向の揃え方は 'vertical-align' 特性で決まります。 揃え方によっては一番高さの大きなの高さよりも行箱高さの方が大きくなることもあります。 >>3

[11] 同じ行内書式付け文脈にある行箱は、通常はそれぞれ違った高さを持ちます。 >>3

積み重ね

[8] 1つの行箱の中で行内箱水平方向に収めることができない時には、 複数の行箱垂直方向に積み重ねて (stack) 、そこに分けて当てはめます。 >>3

[9] 行箱を積み重ねる場合には、互いに重ならずに隙間も開けずに配置されます。 >>3

行内箱の分割

[14] 行内箱行箱を超える場合には、行内箱は複数の分割 (split) されて、 それぞれが複数の行箱にわたって配置されます。行内箱が分割できない場合、例えば

... などには行内箱行箱溢れる (overflow) ことになります。 >>3

[15] 行内箱が分割される時に余白境界線詰めの見た目は変化しません。>>3 従って、例えば周囲に境界線が描かれる行内箱が2つに分割された場合、分割されることによって生じた辺は境界線が描かれません。

[16] 行内箱双方向性テキスト処理 (bidirectional text processing) によって同じ行箱の中であっても複数に分割されることがあります。 >>3

零高行箱

[17] 行箱は、

... なら、零高行箱 (zero-height line box) として扱わなければなりません余白collapse においては零高行箱は無視しなければなりません>>3

関連

[18] 相対配置による移動は一旦通常フローで配置が行われた後に行われます。 従って、移動は行箱の高さが確定した後に行われるため、相対配置の垂直方向の移動によって行箱からはみ出すこともあります。

メモ

[1] CSS3 module: line ( 版) http://dev.w3.org/cvsweb/~checkout~/csswg/css3-linebox/Overview.html?content-type=text/html;%20charset=utf-8

[19] Gloss the CSS term "line box" · whatwg/html@59ffb6e ( 版) https://github.com/whatwg/html/commit/59ffb6e5774f34c307022b832893f38e701f2c36