CSS 2.2 — 10. 視覚整形モデルの詳細

Visual formatting model details

10.1. 包含塊の定義

要素が生成する~box(たち)の位置と~sizeは、要素の `包含塊@ と呼ばれる,ある矩形に相対的に計算されることもある( § 包含塊を見よ)。 それは、以下に従って定義される: ◎ The position and size of an element’s box(es) are sometimes calculated relative to a certain rectangle, called the containing block of the element. The containing block of an element is defined as follows:

`~paged媒体$においては、`絶対的に位置され$た要素は 【…以下,この箇所の内容は `CSS Positioned Layout^cite § 絶対的に位置された要素の断片化-法に述べられているので、この訳では省略する。】 ◎ For absolutely positioned content that resolves to a position on a page other than the page being laid out (the current page), or resolves to a position on the current page which has already been rendered for printing, printers may place the content • on another location on the current page, • on a subsequent page, or • may omit it. ◎ Note that a block-level element that is split over several pages may have a different width on each page and that there may be device-specific limits.

次の文書における各~要素の包含塊は、それらが`有位置$でないならば: ◎ With no positioning, the containing blocks (C.B.) in the following document:

<!DOCTYPE html>
<html>
    <head>
        <title>包含塊の~~説明</title>
    </head>
    <body id="body">
        <div id="div1">
        <p id="p1">最初の段落の~text...</p>
        <p id="p2">これは、<em id="em1">
        <strong id="strong1">二番目の</strong>段落の中の~text</em></p>
        </div>
    </body>
</html>

次に従って確立される: ◎ are established as follows:

~boxを生成する要素 ◎ For box generated by 要素の包含塊を確立するもの ◎ C.B. is established by
`html^e 初期~包含塊 ◎ initial C.B. (UA-dependent)
`body^s `html^e
`div1^s `body^s
`p1^s `div1^s
`p2^s `div1^s
`em1^s `p2^s
`strong1^s `p2^s

初期~包含塊は、~UAに依存する。

`div1^s を次のように`有位置$にした場合: ◎ If we position "div1":

#div1 { position: absolute; left: 50px; top: 50px }

その包含塊は、最早 "body" でなくなり,`初期~包含塊$になる(他に有位置な先祖~boxは無いので)。 ◎ its containing block is no longer "body"; it becomes the initial containing block (since there are no other positioned ancestor boxes).

同様に, `em1^s も次のように`有位置$にした場合: ◎ If we position "em1" as well:

#div1 { position: absolute; left: 50px; top: 50px }
#em1  { position: absolute; left: 100px; top: 100px }

包含塊の表は、次のようになる: ◎ the table of containing blocks becomes:

~boxを生成する要素 ◎ For box generated by 要素の包含塊を確立するもの ◎ C.B. is established by
`html^e 初期~包含塊◎ initial C.B.
`body^s `html^e
`div1^s 初期~包含塊◎ initial C.B.
`p1^s `div1^s
`p2^s `div1^s
`em1^s `div1^s
`strong1^s `em1^s

`有位置$な `em1^s の包含塊は、最も近い有位置な先祖~box — すなわち, `div1^s が生成する~box — になる。 ◎ By positioning "em1", its containing block becomes the nearest positioned ancestor box (i.e., that generated by "div1").

10.2. 内容~横幅: `width^p ~prop

◎名 `width@p ◎値 `length$t | `percentage$t | `auto^v ◎初 `auto^v ◎適 すべての要素 — ただし,[ `行内~box$†, `table-row^v, `table-row-group^v ]は除く。 ◎ all elements but non-replaced inline elements, table rows, and row groups ◎継 されない ◎百 包含塊の横幅を基準にする。 ◎ refer to width of containing block ◎算 指定d値 — ただし、 `length$t 値は絶対~長さに解決される ◎ the percentage or auto as specified or the absolute length ◎順 文法に従う ◎ア 算出d値の型による【!離散的】 ◎表終

【† 原文には “置換されない`行内$要素( non-replaced inline element )” と記されているが、この “行内” は`行内~box$を意味しており,`行内~level$の`置換され$ない要素(`行内-塊$など)は含まれないので、より明確に(他の各種~CSS仕様に倣って) “行内~box(を生成する要素)” と記すことにする — この~pageに現れる,他のすべての “置換されない行内~要素” も含め。 】

この~propは、~boxの内容~横幅(`内容~区画$の横幅)を指定する。 ◎ This property specifies the content width of boxes.

この~propは、`行内~box$を生成する要素には適用されない。 そのような~boxの内容~横幅は、その中に`描画される内容$のそれになる(子が相対的に~offsetされるの)。 行内~boxたちは、何個かの`行l~box$の中へ~flowする。 行l~boxの横幅は、その`包含塊$のそれになるが,`浮動体$が在る場合は短くされることもある。 ◎ This property does not apply to non-replaced inline elements. The content width of a non-replaced inline element’s boxes is that of the rendered content within them (before any relative offset of children). Recall that inline boxes flow into line boxes. The width of line boxes is given by the their containing block, but may be shorted by the presence of floats.

各種 値の意味は: ◎ Values have the following meanings:

`length$t
単位~付きの長さを利用して`内容~区画$の横幅を指定する。 ◎ Specifies the width of the content area using a length unit.
`percentage$t
百分率による横幅を指定する。 百分率は、生成される~boxの`包含塊$の横幅を基準に計算される。 包含塊の横幅が 要素の横幅に依存する場合の 結果の~layoutは、~CSS2においては定義されない。 ◎ Specifies a percentage width. The percentage is calculated with respect to the width of the generated box’s containing block. If the containing block’s width depends on this element’s width, then the resulting layout is undefined in CSS 2.\
注記: 包含塊が塊~容器~要素に基づくような`絶対的に位置され$た要素に対しては、百分率は,その要素の`~padding~box$の横幅を基準に計算される。 これは、百分率による横幅が 常に親~要素の`内容~box$を基準に計算されていた~CSS1からの変更である。 ◎ Note: For absolutely positioned elements whose containing block is based on a block container element, the percentage is calculated with respect to the width of the padding box of that element. This is a change from CSS1, where the percentage width was always calculated with respect to the content box of the parent element.
`auto^v
横幅は、他の~propの値に依存する。 以下の各~節を見よ。 ◎ The width depends on the values of other properties. See the sections below.

`width$p に対する負な値は合法でない。 ◎ Negative values for width are illegal.

例えば、次の規則は,段落の内容~横幅を 100 ~pixelに固定する: ◎ For example, the following rule fixes the content width of paragraphs at 100 pixels:

p { width: 100px }

10.3. 横幅と~marginの計算-法

~layoutに利用される要素の[ `width$p, `margin-left$p, `margin-right$p, `left$p, `right$p ]~propの値は、互いに依存し,生成される~boxの種別にも依存する(~layoutに利用される値は、`使用~値$とも呼ばれる)。 原則的には、使用~値は,算出d値の[ `auto^v を何らかの相応しい値に置換し,百分率~値は 包含塊に基づいて計算した ]結果と同じになるが、例外もある。 ◎ The values of an element’s width, margin-left, margin-right, left and right properties as used for layout depend on the type of box generated and on each other. (The value used for layout is sometimes referred to as the used value.) In principle, the values used are the same as the computed values, with auto replaced by some suitable value, and percentages calculated based on the containing block, but there are exceptions. The following situations need to be distinguished: ◎ inline, non-replaced elements ◎ inline, replaced elements ◎ block-level, non-replaced elements in normal flow ◎ block-level, replaced elements in normal flow ◎ floating, non-replaced elements ◎ floating, replaced elements ◎ absolutely positioned, non-replaced elements ◎ absolutely positioned, replaced elements ◎ inline-block, non-replaced elements in normal flow ◎ inline-block, replaced elements in normal flow ◎ For Points 1-6 and 9-10, the values of left and right in the case of relatively positioned elements are determined by the rules in section 9.4.3.

注記: 以下に計算される `width$p の使用~値は、仮の値であり, `min-width$p, `max-width$p に依存して,複数回 計算する必要が生じることもある。 `最小, 最大な横幅$secを見よ。 ◎ Note. The used value of width calculated below is a tentative value, and may have to be calculated multiple times, depending on min-width and max-width, see the section Minimum and maximum widths below.

以下の各~節では、関連な各種~propの値を次の記号で表す:

これらの値は、初期時には,各~propの算出d値に設定されているとする。 この節の目的は、これらのうち, 不定な 値 `auto^v をとるものを(拘束過多の場合も取扱いつつ) 解決して 使用~値を得ることである。

【 原文には,`有位置$な要素の[ `left$p / `right$p ]の使用~値の計算-法も含まれているが、 `CSS Positioned Layout^cite に定義されるので,和訳は省略する(これらは、他の要素には適用されない)。 】

10.3.X. 各種~boxに対する横幅の計算-法

【 この訳では、各種~boxに対する横幅の計算-法を,この節の中で一括して与える。 】

  1. 先ず,`置換d要素$に対しては、不定な %W を`置換d要素の~sizing$secに従って解決した上で、以下を適用する。
  2. `絶対的に位置され$た要素に対しては、`10.3.7$secに従うとする。
  3. 他の要素に対しては:

    通常~flow内にある`行内~level$の要素 【!原文 § 10.3.1, § 10.3.2, § 10.3.9, § 10.3.10】
    `浮動体$ 【!原文 § 10.3.5, § 10.3.6】

    不定な %W は:

    • `行内~box$に対しては、 `width$p は適用されないので,計算されない。
    • 他(`行内-塊$, `浮動体$)に対しては、`内容収納~size$†( “ `shrink-to-fit^en(最短収納)” ~size)に解決する。 【†ここでは、 CSS Sizing の用語を利用して、原文の記述を省略する。】 【!~layoutの目的においては、内在的~sizeが計算される。】
    不定な[ %mL / %mR ]は、 0 に解決する。
    通常~flow内にある`塊~level$の要素
    `10.3.3$secにて与えられる。

10.3.1. 行内~boxを生成する要素

`各種~boxに対する横幅の計算-法$secを見よ。 ◎ The width property does not apply. A computed value of auto for margin-left or margin-right becomes a used value of 0.

10.3.2. 行内~levelの置換d要素

`各種~boxに対する横幅の計算-法$secを見よ。 ◎ A computed value of auto for margin-left or margin-right becomes a used value of 0. ◎ If height and width both have computed values of auto and the element also has an intrinsic width, then that intrinsic width is the used value of width. ◎ If height and width both have computed values of auto and the element has no intrinsic width, but does have an intrinsic height and intrinsic ratio; or if width has a computed value of auto, height has some other computed value, and the element does have an intrinsic ratio; then the used value of width is: • (used height) * (intrinsic ratio) ◎ If height and width both have computed values of auto and the element has an intrinsic ratio but no intrinsic height or width, then the used value of width is undefined in CSS 2. However, it is suggested that, if the containing block’s width does not itself depend on the replaced element’s width, then the used value of width is calculated from the constraint equation used for block-level, non-replaced elements in normal flow. ◎ Otherwise, if width has a computed value of auto, and the element has an intrinsic width, then that intrinsic width is the used value of width. ◎ Otherwise, if width has a computed value of auto, but none of the conditions above are met, then the used value of width becomes 300px. If 300px is too wide to fit the device, UAs should use the width of the largest rectangle that has a 2:1 ratio and fits the device instead.

10.3.3. 通常~flow内にある塊~levelの置換されない要素

結果の %mL, %W, %mR は、次の等式を満たすように解決するモノトスル ⇒ %mL + %W + %mR = `包含塊$の横幅 − %pb

ここで %pb は、横方向の~padding幅, ~border幅の算出d値の総和を表す(これらの~propは、 `auto^v 値をとらず,算出d値は常に絶対~長さに解決される) ⇒ %pb = `border-left-width$p + `padding-left$p + `padding-right$p + `border-right-width$p

◎ The following constraints must hold among the used values of the other properties: ◎ margin-left + border-left-width + padding-left + width + padding-right + border-right-width + margin-right = width of containing block
%W は不定でない:

先ず,[ %W + ( 不定でない %mL ) + ( 不定でない %mR ) ~GT 包含塊の横幅 − %pb ]ならば、不定な[ %mL / %mR ]は 0 に解決する。 その上で, %mL, %mR に応じて: ◎ If width is not auto and border-left-width + padding-left + width + padding-right + border-right-width (plus any of margin-left or margin-right that are not auto) is larger than the width of the containing block, then any auto values for margin-left or margin-right are, for the following rules, treated as zero.

%mL, %mR ともに不定でない:

拘束過多。 包含塊の `direction$p ~propに応じて:

  • `ltr^v ならば: %mR を不定と見なして, %mR について等式を解いて解決する。
  • `rtl^v ならば: %mL を不定と見なして, %mL について等式を解いて解決する。
◎ If all of the above have a computed value other than auto, the values are said to be "over-constrained" and one of the used values will have to be different from its computed value. If the direction property of the containing block has the value ltr, the specified value of margin-right is ignored and the value is calculated so as to make the equality true. If the value of direction is rtl, this happens to margin-left instead.
%mL, %mR の片方だけ不定:
その不定な片方について等式を解いて解決する。 ◎ If there is exactly one value specified as auto, its used value follows from the equality.
%mL, %mR ともに不定:
%mL, %mR について, %mL = %mR の下で等式を解いて解決する。 これは、`包含塊$の左右の辺を基準に要素を横方向に中央寄せにする。 ◎ ↓↓
%W は不定:
不定な[ %mR / %mL ]は 0 に解決した上で、 %W について等式を解いて解決する。 ◎ If width is set to auto, any other auto values become 0 and width follows from the resulting equality. ◎ ↑↑If both margin-left and margin-right are auto, their used values are equal. This horizontally centers the element with respect to the edges of the containing block.

【 見通しを良くするため、この節では,原文による場合分けを一部 組み替えている。 】

10.3.4. 通常~flow内にある塊~levelの置換d要素

`各種~boxに対する横幅の計算-法$sec, および `10.3.3$sec を見よ。 ◎ The used value of width is determined as for inline replaced elements. Then the rules for non-replaced block-level elements are applied to determine the margins.

10.3.5. 浮動している置換されない要素

`各種~boxに対する横幅の計算-法$secを見よ。 ◎ If margin-left, or margin-right are computed as auto, their used value is 0. ◎ If width is computed as auto, the used value is the "shrink-to-fit" width. ◎ Calculation of the shrink-to-fit width is similar to calculating the width of a table cell using the automatic table layout algorithm. Roughly: calculate the preferred width by formatting the content without breaking lines other than where explicit line breaks occur, and also calculate the preferred minimum width, e.g., by trying all possible line breaks. CSS 2 does not define the exact algorithm. Thirdly, find the available width: in this case, this is the width of the containing block minus the used values of margin-left, border-left-width, padding-left, padding-right, border-right-width, margin-right, and the widths of any relevant scroll bars. ◎ Then the shrink-to-fit width is: min(max(preferred minimum width, available width), preferred width).

10.3.6. 浮動している置換d要素

`各種~boxに対する横幅の計算-法$secを見よ。 ◎ If margin-left or margin-right are computed as auto, their used value is 0. The used value of width is determined as for inline replaced elements.

10.3.7. 絶対的に位置された置換されない要素

【 この節の内容は、 `CSS Positioned Layout^cite 内の 対応する節 に委譲。 】

10.3.8. 絶対的に位置された置換d要素

【 この節の内容は、 `CSS Positioned Layout^cite 内の 対応する節 に委譲。 】

10.3.9. 通常~flow内にある置換されない行内-塊~要素

`各種~boxに対する横幅の計算-法$secを見よ。 ◎ If width is auto, the used value is the shrink-to-fit width as for floating elements. ◎ A computed value of auto for margin-left or margin-right becomes a used value of 0.

10.3.10. 通常~flow内にある行内-塊~置換d要素

`各種~boxに対する横幅の計算-法$secを見よ。 ◎ Exactly as inline replaced elements.

10.X. 置換d要素の~sizing

【 この節(この訳による追加)は、原文の各所に散らばる類似な記述を集約して整理したものである。 】

`置換d要素$に対する不定な %W / %H ( `width$p / `height$p の算出d値 `auto^v )は,下の表に従って[ “結果の %W”/ “結果の %H” ]の列で与えられる値に解決される — ここで:

%W %H %iW %iH %iA 結果の %W 結果の %H
%W %W × %iA
%W %W × %iA
%W %iH
%W 150px
%W 150px
%H ÷ %iA %H
%H ÷ %iA %H
300px %H
%iW %H
300px %H
%iW %iH
%X %X × %iA
300px %iH
%iW 150px
300px 150px

【 いずれにせよ、内在的~縦横比が不定でないならば、それを保つことが趣旨にある(しかしながら, %W, %H ともに不定でない場合、この節は適用されず,内在的~縦横比も無視されることになる)。 】

ここで:

10.4. 最小, 最大な横幅: `min-width^p, `max-width^p

◎名 `min-width@p ◎値 `length$t | `percentage$t ◎初 `0^v ◎適 すべての要素 — ただし,[ `行内~box$, `table-row^v, `table-row-group^v ]は除く。 ◎ all elements but non-replaced inline elements, table rows, and row groups ◎継 されない ◎百 包含塊の横幅を基準にする。 ◎ refer to width of containing block ◎算 指定d値 — ただし、 `length$t 値は絶対~長さに解決される ◎ the percentage as specified or the absolute length ◎順 文法に従う ◎ア 算出d値の型による【!離散的】 ◎表終 ◎名 `max-width@p ◎値 `length$t | `percentage$t | `none^v ◎初 `none^v ◎適 `min-width$p と同じ ◎継 同上 ◎百 同上 ◎算 同上 ◎順 文法に従う ◎ア 算出d値の型による【!離散的】 ◎表終

これら 2 つの~propにより、作者は,内容~横幅をある範囲に拘束できるようになる。 各種~値の意味は: ◎ These two properties allow authors to constrain content widths to a certain range. Values have the following meanings:

`length$t
固定的な 最小/最大 使用~横幅を指定する。 ◎ Specifies a fixed minimum or maximum used width.
`percentage$t
使用~値を決定するための百分率を指定する。 百分率は、生成される~boxの`包含塊$の横幅を基準に計算される。 包含塊の横幅が負である場合、使用~値は 0 になる。 包含塊の横幅が,要素の横幅に依存する場合の結果の~layoutは、~CSS2においては定義されない。 ◎ Specifies a percentage for determining the used value. The percentage is calculated with respect to the width of the generated box’s containing block. If the containing block’s width is negative, the used value is zero. If the containing block’s width depends on this element’s width, then the resulting layout is undefined in CSS 2.
`none^v
(この値は `max-width$p のみとり得る。) ~boxの横幅を制限しない。 ◎ (Only on max-width) No limit on the width of the box.

`min-width$p / `max-width$p に対する負な値は、合法でない。 ◎ Negative values for min-width and max-width are illegal.

~CSS2においては、[ `table^v, `inline-table^v, `table-cell^v, `table-column^v, `table-column-group^v ]に対しては, `min-width$p / `max-width$p の効果は定義されない。 ◎ In CSS 2, the effect of min-width and max-width on tables, inline tables, table cells, table columns, and column groups is undefined.

この 2 つの~propが `width$p ~propの`使用~値$にどう波及するかについては、次の~algoで述べられる: ◎ The following algorithm describes how the two properties influence the used value of the width property:

  1. 先ず、`横幅と~marginの計算-法$secに従って,仮の使用~横幅 %W を計算する。 ◎ The tentative used width is calculated (without min-width and max-width) following the rules under "Calculating widths and margins" above.
  2. [ %W ~GT `max-width$p の算出d値 %maxW ]ならば、 `width$p の算出d値に %maxW を利用する下で,再度 `横幅と~marginの計算-法$secを適用する。 ◎ If the tentative used width is greater than max-width, the rules above are applied again, but this time using the computed value of max-width as the computed value for width.
  3. [ 結果の横幅 %W ~LT `min-width$p の算出d値 %minW ]ならば、 `width$p の算出d値に %minW を利用する下で,再度 `横幅と~marginの計算-法$secを適用する。 ◎ If the resulting width is smaller than min-width, the rules above are applied again, but this time using the value of min-width as the computed value for width.

注記: これらの手続きは、上の~propの本当の算出d値には影響しない。 ◎ These steps do not affect the real computed values of the above properties.

ただし、内在的~縦横比を伴う置換d要素のうち[ `width$p, `height$p ]とも算出d値は `auto^v になるものに対しては、以下に与える~algoで決定される: ◎ However, for replaced elements with an intrinsic ratio and both width and height specified as auto, the algorithm is as follows:

縦横比を伴う~size不定の置換d要素に対する最大, 最小~sizeの適用-法

内在的~縦横比を伴う置換d要素のうち[ `width$p, `height$p ]とも `auto^v が指定されているものに対しては、[ `min-*^p, `max-*^p ]~propは,要素の[ `width$p, `height$p ]の使用~値に次に従うように影響する:

  1. まず、利用される値を定義する:

    • ( %W, %H ) := `置換d要素の~sizing$secに従って得られる “仮の” ( 横幅, 縦幅 )
    • %iA := %H ÷ %W( = 内在的~縦横比)
    • %minW := `min-width$p の算出d値
    • %maxW := max( %minW, `max-width$p の算出d値 ) †
    • %minH := `min-height$p の算出d値
    • %maxH := max( %minH, `max-height$p の算出d値 ) †

    † `max-*^p に対する値が `none^v の場合、無限大になる。

    %W / %H は、~~通常は,内在的[ 横幅/縦幅 ]になるが、内在的~縦横比のみを伴う場合には,そうなるとは限らない。

    結果の使用~値は、次の式で与えられる:

    • 横幅( `width$p ) = max(%X, %minW)
    • 縦幅( `height$p ) = max(%X × %iA, %minH)
    • %X = min( %maxW, %maxH ÷ %iA, max( %W, %minW, %minH ÷ %iA ) )

    【 この式は、原文の多岐にわたる場合分けを場合分けなしに集約したものである。 概念的には、元の矩形を, (1) 先ず,~size %minW × %minH の矩形を包含するように,必要なら — 縦横比を保ちながら — 拡大して、 (2) 次に,~size %maxW × %maxH の矩形に収まるように,必要なら — 縦横比を保ちながら — 縮小して、 (3) 最後に,~size %minW × %minH の矩形を包含するように,必要なら(縦横比は無視して)横幅, 縦幅を個別に増やして得られる矩形になる。 】

    ◎ Select from the table the resolved height and width values for the appropriate constraint violation. Take the max-width and max-height as max(min, max) so that min ≤ max holds true. In this table w and h stand for the results of the width and height computations ignoring the min-width, min-height, max-width and max-height properties. Normally these are the intrinsic width and height, but they may not be in the case of replaced elements with intrinsic ratios.

    注記: `width$p, `height$p のうち,片方は非 `auto^v, もう片方は `auto^v が指定されている場合には、 `auto^v にされた方に対し[ `min-*^p / `max-*^p ]による~sizeの拘束を適用したときに,拘束過多になり得る。 仕様は,挙動において明瞭であるが、作者の期待に沿わないこともある。 異なる結果を得したいときは、~CSS3 `object-fit$p ~propを利用するとよい。 ◎ Note: In cases where an explicit width or height is set and the other dimension is auto, applying a minimum or maximum constraint on the auto side can cause an over-constrained situation. The spec is clear in the behavior but it might not be what the author expects. The CSS3 object-fit property can be used to obtain different results in this situation.

  2. [ `width$p / `height$p ]に対する この新たな使用~値を算出d値と見なす下で,[ `横幅と~marginの計算-法$sec / `縦幅と~marginの計算-法$sec ]を適用して、不定な~marginを解決する。 ◎ Then apply the rules under "Calculating widths and margins" above, as if width were computed as this value.

10.5. 内容~縦幅: `height^p ~prop

◎名 `height@p ◎値 `length$t | `percentage$t | `auto^v ◎初 `auto^v ◎適 すべての要素 — ただし,[ `行内~box$, `table-column^v, `table-column-group^v ]は除く。 ◎ all elements but non-replaced inline elements, table columns, and column groups ◎継 されない ◎百 注釈文を見よ ◎算 百分率または `auto^v ( 下の `percentage^t の注釈文を見よ)/ 絶対~長さ ◎ the percentage or auto (see prose under <percentage>) or the absolute length ◎順 文法に従う ◎ア 算出d値の型による【!離散的】 ◎表終

この~propは、~boxの内容~縦幅(`内容~区画$の縦幅)を指定する。 ◎ This property specifies the content height of boxes.

この~propは、`行内~box$には適用されない。 代わりに利用される規則については、`10.6.1$secを見よ。 ◎ This property does not apply to non-replaced inline elements. See the section on computing heights and margins for non-replaced inline elements for the rules used instead.

各種~値の意味は: ◎ Values have the following meanings:

`length$t
長さ値を利用して`内容~区画$の縦幅を指定する。 ◎ Specifies the height of the content area using a length value.
`percentage$t
百分率による縦幅を指定する。 百分率は、生成される~boxの`包含塊$の縦幅を基準に計算される。 包含塊の縦幅が明示的に指定されていない(すなわち,内容~縦幅に依存する), かつ 要素は`絶対的に位置され$てない場合、 `auto^v に算出される。 `根~要素$に対する百分率による縦幅は、`初期~包含塊$に相対的になる。 ◎ Specifies a percentage height. The percentage is calculated with respect to the height of the generated box’s containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the value computes to auto. A percentage height on the root element is relative to the initial containing block.\
注記: 包含塊が塊~levelの要素に基づくような`絶対的に位置され$た要素に対しては、百分率は,その要素の`~padding~box$の縦幅を基準に計算される。 これは、百分率による縦幅が常に親~要素の`内容~box$を基準に計算されていた~CSS1からの変更である。 ◎ Note: For absolutely positioned elements whose containing block is based on a block-level element, the percentage is calculated with respect to the height of the padding box of that element. This is a change from CSS1, where the percentage was always calculated with respect to the content box of the parent element.
`auto^v
縦幅は、他の~propの値に依存する。 以下の各~節【!下の注釈文】を見よ。 ◎ The height depends on the values of other properties. See the prose below.

注記: `絶対的に位置され$た要素の包含塊の縦幅は,要素~自身の~sizeから独立であり, そのような要素~上の百分率による縦幅は、常に解決できる。 しかしながら、文書~内の後に来る要素が処理されるまで,縦幅は既知にならないこともある。 ◎ Note that the height of the containing block of an absolutely positioned element is independent of the size of the element itself, and thus a percentage height on such an element can always be resolved. However, it may be that the height is not known until elements that come later in the document have been processed.

`height$p に対する負な値は、合法でない。 ◎ Negative values for height are illegal.

例えば、次の規則は、段落の内容~縦幅を 100 ~pixelに設定する: ◎ For example, the following rule sets the content height of paragraphs to 100 pixels:

p { height: 100px }

内容の縦幅が 100~pixel を超過するような段落は、 `overflow$p ~propに則って`~overflow$することになる。 ◎ Paragraphs of which the height of the contents exceeds 100 pixels will overflow according to the overflow property.

10.6. 縦幅と~marginの計算-法

以下の各~節では、関連な各種~propの値を次の記号で表す:

これらの値は、初期時には,各~propの算出d値に設定されているとする。 この節の目的は、これらのうち, 不定な 値 `auto^v をとるものを 解決して 使用~値を得ることである(拘束過多の場合も取扱いつつ)。 ◎ For calculating the values of top, margin-top, height, margin-bottom, and bottom a distinction must be made between various kinds of boxes: ◎ inline, non-replaced elements ◎ inline, replaced elements ◎ block-level, non-replaced elements in normal flow ◎ block-level, replaced elements in normal flow ◎ floating, non-replaced elements ◎ floating, replaced elements ◎ absolutely positioned, non-replaced elements ◎ absolutely positioned, replaced elements ◎ inline-block, non-replaced elements in normal flow ◎ inline-block, replaced elements in normal flow ◎ For Points 1-6 and 9-10, the used values of top and bottom are determined by the rules in section 9.4.3.

注記: 以下の規則は、根~要素にも,他の要素と同じように適用される。 ◎ Note: these rules apply to the root element just as to any other element.

注記: 以下で計算される `height$p の使用~値は仮の値であり、 `min-height$p, `max-height$p に依存して,複数回 計算する必要が生じることもある。 `最小, 最大な縦幅$secを見よ。 ◎ Note. The used value of height calculated below is a tentative value, and may have to be calculated multiple times, depending on min-height and max-height, see the section Minimum and maximum heights below.

【 原文には,`有位置$な要素の[ `top$p / `bottom$p ]の使用~値の計算-法も含まれているが、 `CSS Positioned Layout^cite に定義されるので,和訳は省略する(これらは、他の要素には適用されない)。 】

10.6.X. 各種~boxに対する縦幅の計算-法

【 この訳では、各種~boxに対する縦幅の計算-法を,この節の中で一括して与える。 】

  1. 先ず,`置換d要素$に対しては、不定な %H を`置換d要素の~sizing$secに従って解決した上で、以下を適用する。
  2. `絶対的に位置され$た要素に対しては、`10.6.4$secにて与えられる。
  3. 他の要素に対しては:

    1. 不定な[ %mT / %mB ]は ⇒# `行内~box$に対しては、縦方向~marginは適用されないので計算されない / 他の要素に対しては、 0 に解決する
    2. 不定な %H については、次の状況を判別する必要がある(置換d要素については最初の段で解決-済みなので、この段は関わらない):

      新たな`塊~整形~文脈$を確立する要素

      `塊~整形~文脈の根に対する自動~縦幅$secにて与えられる。 次に挙げるもの(のうち,他の整形~文脈を確立しないもの)が該当する:

      • 通常~flow内にある`塊~level$の要素であって `overflow$p の算出d値が `visible$v でないもの — (A) ただし、 `overflow$p ~prop値が`表示域に伝播され$ているものは除く。
      • `行内-塊$。
      • `浮動体$。

      行内~levelの要素に対しては、それを包含する行l~boxの縦幅を計算するときには,要素の`~margin~box$が利用される。

      新たな整形~文脈を確立しない,行内~levelの要素(通常~flow内に`行内~box$を生成するもの)
      `10.6.1$secにて与えられる。
      新たな整形~文脈を確立しない,塊~levelの要素
      `行内~整形~文脈$を確立する~boxを生成する,塊~levelの要素
      `10.6.3$secにて与えられる — 上の (A) で~~除外されたものも,ここに含まれる。
      他の整形~文脈を確立する要素
      その整形~文脈の規則に従う — この文書では定義されない。 ~CSS2においては、`~table~box$が該当する。

10.6.1. 行内~boxを生成する要素

`行内~box$に対しては `height$p は適用されないので、不定な %H も計算されない。 `内容~区画$の縦幅は~fontに基づくべきであるが、この仕様では,その方法は指定されない。 ~UAは、例えば, ~em-boxや, ~fontの最大な ~ascender/~descender を利用してもヨイ(後者の場合、~em-boxの上下にはみ出る~glyphがあっても,`内容~区画$の中に~~収まることを確保するが、~boxの~sizeが~fontごとにまちまちになる。 前者の場合、作者は `line-height$p に相対的な背景の~style付けを制御できるようになるが、~glyphの一部は,`内容~区画$の外に塗られるようになる。) ◎ The height property does not apply. The height of the content area should be based on the font, but this specification does not specify how. A UA may, e.g., use the em-box or the maximum ascender and descender of the font. (The latter would ensure that glyphs with parts above or below the em-box still fall within the content area, but leads to differently sized boxes for different fonts; the former would ensure authors can control background styling relative to the line-height, but leads to glyphs painting outside their content area.)

注記: ~CSS3では,おそらく、[ ~fontのどの~~計量を内容~縦幅に利用するか ]を選定するような~propが含められることになる。 ◎ Note: level 3 of CSS will probably include a property to select which measure of the font is used for the content height.

`行内~box$の縦方向の[ ~padding, ~border, ~margin ]は、`内容~区画$の 上端/下端 から開始される — `line-height$p は、行l~boxの縦幅を計算するときに利用されるだけで,それには関わらない。 ◎ The vertical padding, border and margin of an inline, non-replaced box start at the top and bottom of the content area, and has nothing to do with the line-height. But only the line-height is used when calculating the height of the line box.

複数の~fontが利用される場合(利用される~glyphが,他と異なる~font内に見出されたときに起こる)の`内容~区画$の縦幅は、この仕様では定義されない。 しかしながら,縦幅は、`内容~区画$が,要素~内容に利用されるすべての~fontの[ ~em-box, または 最大な~ascenderと最大な~descenderの和 ]を収めるに十分な高さにすることが示唆される。 これは、~fontの`基底線$の整列に依存して,利用される どの~font~sizeよりも大きくなり得ることに注意。 ◎ If more than one font is used (this could happen when glyphs are found in different fonts), the height of the content area is not defined by this specification. However, we suggest that the height is chosen such that the content area is just high enough for either (1) the em-boxes, or (2) the maximum ascenders and descenders, of all the fonts in the element. Note that this may be larger than any of the font sizes involved, depending on the baseline alignment of the fonts.

10.6.2. 通常~flow内にある[行内~level/塊~level/行内-塊]置換d要素/浮動している置換d要素

`各種~boxに対する縦幅の計算-法$secを見よ。 ◎ If margin-top, or margin-bottom are auto, their used value is 0. ◎ If height and width both have computed values of auto and the element also has an intrinsic height, then that intrinsic height is the used value of height. ◎ Otherwise, if height has a computed value of auto, and the element has an intrinsic ratio then the used value of height is: • (used width) / (intrinsic ratio) ◎ Otherwise, if height has a computed value of auto, and the element has an intrinsic height, then that intrinsic height is the used value of height. ◎ Otherwise, if height has a computed value of auto, but none of the conditions above are met, then the used value of height must be set to the height of the largest rectangle that has a 2:1 ratio, has a height not greater than 150px, and has a width not greater than the device width.

10.6.3. 通常~flow内にある塊~levelの置換されない要素

`各種~boxに対する縦幅の計算-法$sec(新たな整形~文脈を確立しない場合)も見よ。 ◎ This section also applies to block-level non-replaced elements in normal flow when overflow does not compute to visible but has been propagated to the viewport. ◎ If margin-top, or margin-bottom are auto, their used value is 0. If height is auto, the height depends on whether the element has any block-level children and whether it has padding or borders:

不定な %H は、[ 要素が`塊~level$の子を持つかどうか, および ~paddingまたは~borderを持つかどうか ]に依存して、[ 要素が生成する~box %box の`内容~区画$の上端~辺 ]から[ 次のうち最初に該当するもの ]までの距離に解決する: ◎ The element’s height is the distance from its top content edge to the first applicable of the following:

  1. %box は`行内~整形~文脈$を確立している 【すなわち、塊~levelの子を持たない】 , かつ 行l~boxを一つは含む場合 ⇒ 最後の行l~boxの下端~辺 ◎ the bottom edge of the last line box, if the box establishes a inline formatting context with one or more lines
  2. %box の子に`~flow内$にあるものがある場合、そのような子のうち最後のものを %E とするとき:

    1. %E の下端~margin %m と, %box の下端~marginとが`相殺され$ない場合 ⇒ %m の`~margin辺$( %m は,場合によっては他と`相殺され$る)
    2. %box の上端~marginと下端~marginとが`相殺され$ない場合 ⇒ %E の下端`~border辺$
    ◎ the bottom edge of the bottom (possibly collapsed) margin of its last in-flow child, if the child’s bottom margin does not collapse with the element’s bottom margin ◎ the bottom border edge of the last in-flow child whose top margin doesn’t collapse with the element’s bottom margin
  3. 上に該当するものが無い場合 ⇒ %H は 0 に解決する ◎ zero, otherwise

通常~flow内にある子のみが織り込まれる(すなわち, `浮動体$ /`絶対的に位置され$た ~boxは無視され、`相対的に位置され$た~boxは,~offsetされていないと見なす)。 子~boxは`匿名~塊~box$の場合もあることに注意。 ◎ Only children in the normal flow are taken into account (i.e., floating boxes and absolutely positioned boxes are ignored, and relatively positioned boxes are considered without their offset). Note that the child box may be an anonymous block box.

10.6.4. 絶対的に位置された置換されない要素

【 この節の内容は、 `CSS Positioned Layout^cite 内の 対応する節 に委譲。 】

10.6.5. 絶対的に位置された置換d要素

【 この節の内容は、 `CSS Positioned Layout^cite 内の 対応する節 に委譲。 】

10.6.6. 複雑な事例

`各種~boxに対する縦幅の計算-法$sec(新たな整形~文脈を確立する場合)を見よ。 ◎ This section applies to: ◎ Block-level, non-replaced elements in normal flow when overflow does not compute to visible (except if the overflow property’s value has been propagated to the viewport). ◎ inline-block, non-replaced elements. ◎ Floating, non-replaced elements. ◎ If margin-top, or margin-bottom are auto, their used value is 0. If height is auto, the height depends on the element’s descendants per 10.6.7. ◎ For inline-block elements, the margin box is used when calculating the height of the line box.

10.6.7. 塊~整形~文脈の根に対する `auto^v 縦幅

`塊~整形~文脈$を確立する要素に対する不定な %H は、以下に従って解決される: ◎ In certain cases (see, e.g., sections 10.6.4 and 10.6.6 above), the height of an element that establishes a block formatting context is computed as follows:

要素は`行内~level$の子のみを持つ場合【すなわち,塊~levelの子を持たない】 ◎ If it only has inline-level children,\
縦幅は、[ 最も上端にある行l~boxの上端から, 最も下端にある行l~boxの下端まで ]の距離 ◎ the height is the distance between the top of the topmost line box and the bottom of the bottommost line box.
要素は`塊~level$の子を持つ場合【すなわち,行内~levelの子は匿名の塊~levelの~boxで包装される】 ◎ If it has block-level children,\
縦幅は、塊~levelの子~boxの`~margin辺$のうち[ 最も上端にある上端~margin辺から, 最も下端にある下端~margin辺まで ]の距離 ◎ the height is the distance between the top margin-edge of the topmost block-level child box and the bottom margin-edge of the bottommost block-level child box.

`絶対的に位置され$た子は 無視され、`相対的に位置され$た~boxは ~offsetなしと見なされる。 `匿名~塊~box$になる子~boxもあることに注意。 ◎ Absolutely positioned children are ignored, and relatively positioned boxes are considered without their offset. Note that the child box may be an anonymous block box.

加えて、次のいずれも満たす要素の子孫がある場合、縦幅は,それらの`~margin辺$を含むように増やされる:

  • `浮動体$である
  • 下端`~margin辺$は要素の下端`内容~辺$の下に来る
  • この`塊~整形~文脈$に関与する

例えば、[ `絶対的に位置され$た子孫/他の`浮動体$ ]の内側にある`浮動体$は,織り込まれない。

◎ In addition, if the element has any floating descendants whose bottom margin edge is below the element’s bottom content edge, then the height is increased to include those edges. Only floats that participate in this block formatting context are taken into account, e.g., floats inside absolutely positioned descendants or other floats are not.

10.7. 最小, 最大な縦幅: `min-height^p, `max-height^p

要素の縦幅をある範囲に拘束できると有用になることもある。 次の 2 つの~propがこの機能性を提供する: ◎ It is sometimes useful to constrain the height of elements to a certain range. Two properties offer this functionality:

◎名 `min-height@p ◎値 `length$t | `percentage$t ◎初 `0^v ◎適 すべての要素 — ただし,[ `行内~box$, `table-column^v, `table-column-group^v ]は除く。 ◎ all elements but non-replaced inline elements, table columns, and column groups ◎継 されない ◎百 注釈文を見よ ◎算 指定d値 — ただし、 `length$t 値は絶対~長さに解決される ◎ the percentage as specified or the absolute length ◎順 文法に従う ◎ア 算出d値の型による【!離散的】 ◎表終 ◎名 `max-height@p ◎値 `length$t | `percentage$t | `none^v ◎初 `none^v ◎適 `min-height$p と同じ ◎継 同上 ◎百 同上 ◎算 同上 ◎順 文法に従う ◎ア 算出d値の型による【!離散的】 ◎表終

これら 2 つの~propにより、作者は,~boxの縦幅をある範囲に拘束できるようになる。 各種~値の意味は: ◎ These two properties allow authors to constrain box heights to a certain range. Values have the following meanings:

`length$t
固定的な最小/最大~算出d縦幅を指定する。 ◎ Specifies a fixed minimum or maximum computed height.
`percentage$t
使用~値を決定するときの百分率を指定する。 百分率は、生成される~boxの`包含塊$の縦幅を基準に計算される。 要素の包含塊の縦幅が明示的に指定されていない(すなわち、包含塊の内容~縦幅に依存する), かつ 要素が`絶対的に位置され$ていない場合の百分率~値は `min-height$p に対しては `0^v / `max-height$p に対しては `none^v ]に扱われる。 【算出d値がこの値とされるわけではなく、以下に述べる縦幅に対する拘束を無にすると見られる。】 ◎ Specifies a percentage for determining the used value. The percentage is calculated with respect to the height of the generated box’s containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the percentage value is treated as 0 (for min-height) or none (for max-height).
`none^v
( `max-height$p のみがとり得る) ~boxの縦幅は制限されない。 ◎ (Only on max-height) No limit on the height of the box.

`min-height$p / `max-height$p に対する負な値は合法でない。 ◎ Negative values for min-height and max-height are illegal.

~CSS2においては、[ `table^v, `inline-table^v, `table-cell^v, `table-column^v, `table-row-group^v ]に対しては, `min-height$p / `max-height$p の効果は定義されない。 ◎ In CSS 2, the effect of min-height and max-height on tables, inline tables, table cells, table rows, and row groups is undefined.

この 2 つの~propが `height$p ~propの`使用~値$にどう波及するかについては、次の~algoで述べられる: ◎ The following algorithm describes how the two properties influence the used value of the height property:

  1. 先ず、`縦幅と~marginの計算-法$secに従って,仮の使用~縦幅 %H を計算する。 ◎ The tentative used height is calculated (without min-height and max-height) following the rules under "Calculating heights and margins" above.
  2. [ %H ~GT `max-height$p の算出d値 %maxH ]ならば、 `height$p の算出d値に %maxH を利用する下で,再度 `縦幅と~marginの計算-法$secを適用する。 ◎ If this tentative height is greater than max-height, the rules above are applied again, but this time using the value of max-height as the computed value for height.
  3. [ 結果の縦幅 %H ~LT `min-height$p の算出d値 %minH ]ならば、 `height$p の算出d値に %minH を利用する下で,再度 `縦幅と~marginの計算-法$secを適用する。 ◎ If the resulting height is smaller than min-height, the rules above are applied again, but this time using the value of min-height as the computed value for height.

注記: この手続きは、上の各~propの本当の算出d値には影響しない。 `height$p の使用~値が変化しても、~margin相殺-法に対する効果はない。 § ~marginの相殺-法 における[ `min-height^p / `max-height^p ]用の規則から特定的に要求されない限り。 ◎ These steps do not affect the real computed values of the above properties. The change of used height has no effect on margin collapsing except as specifically required by rules for min-height or max-height in "Collapsing margins" (8.3.1).

ただし,内在的~縦横比を伴う置換d要素のうち[ `width$p, `height$p ]とも算出d値は `auto^v になるものに対しては、 § 縦横比を伴う~size不定の置換d要素に対する最大, 最小~size に従って,その使用~値を見出す。 ◎ However, for replaced elements with both width and height computed as auto, use the algorithm under Minimum and maximum widths above to find the used width and height. Then apply the rules under "Computing heights and margins" above, using the resulting width and height as if they were the computed values.

10.8. 行高の計算: `line-height^p, `vertical-align^p ~prop

§ `行内~整形~文脈$にて述べたように、~UAは,行内~levelの~boxたちを `行l~box$たちを縦方向に堆積して~flowさせる。 行高(行l~boxの縦幅)は、以下に従って決定される: ◎ As described in the section on inline formatting contexts, user agents flow inline-level boxes into a vertical stack of line boxes. The height of a line box is determined as follows:

  1. 行l~box内の行内~levelの~boxの縦幅は: [ 置換d/ `行内-塊$/ `inline-table^v ]要素に対しては、その`~margin~box$の縦幅になる。 行内~boxに対しては、その `line-height$p になる( `縦幅と~marginの計算-法$sec, および `行間$secの`行内~boxの縦幅$ を見よ。) ◎ The height of each inline-level box in the line box is calculated. For replaced elements, inline-block elements, and inline-table elements, this is the height of their margin box; for inline boxes, this is their line-height. (See "Calculating heights and margins" and the height of inline boxes in "Leading and half-leading".)
  2. 行内~levelの~boxたちは、 `vertical-align$p ~propに則って縦方向に整列される。 それらが `top$v / `bottom$v に整列される場合、行高(~boxたちが属する行l~boxの縦幅)を最小~化するように整列するモノトスル。 そのような~boxたちが十分高い場合、複数の解法があり得る — ~CSS2は、行l~boxの`基底線$の位置決め(すなわち、後述の`支柱$の位置決め)は定義しない。 ◎ The inline-level boxes are aligned vertically according to their vertical-align property. In case they are aligned top or bottom, they must be aligned so as to minimize the line box height. If such boxes are tall enough, there are multiple solutions and CSS 2 does not define the position of the line box’s baseline (i.e., the position of the strut, see below).
  3. 行高は、【同じ行l~boxの中の】 最も上側にある~boxの上端と, 最も下側にある~boxの下端との距離である(これには、下の `line-height$p にて説明される`支柱$も含まれる)。 ◎ The line box height is the distance between the uppermost box top and the lowermost box bottom. (This includes the strut, as explained under line-height below.)

空な行内~要素は,空な行内~boxを生成するが、これらの~boxも,依然として[ ~margin, ~padding, ~border, 行高 ]を持つので、内容を伴う要素と同じく,これらの計算に波及する。 ◎ Empty inline elements generate empty inline boxes, but these boxes still have margins, padding, borders and a line height, and thus influence these calculations just like elements with content.

10.8.1. 行間と半~行間

~CSSにおいては、どの~fontも,次の記号で表される~font計量を持つものと見做される:

  • %A は、(所与の~fontの所与の~sizeに対する)`基底線$より上側の高さを意味する。
  • %D は、同様に`基底線$より下側の深さを意味する。 上端から下端までの距離は %A + %D になる。

§ TrueType/OpenType~fontの %A, %D を見出す方法 を見よ)。 これらは、全体としての~fontの計量であり、個々の~glyphの~ascenderや~descenderに対応させる必要はないことに注意。

◎ CSS assumes that every font has font metrics that specify a characteristic height above the baseline and a depth below it. In this section we use A to mean that height (for a given font at a given size) and D the depth. We also define AD = A + D, the distance from the top to the bottom. (See the note below for how to find A and D for TrueType and OpenType fonts.) Note that these are metrics of the font as a whole and need not correspond to the ascender and descender of any individual glyph.

~UAは、`行内~box$内の~glyphたちを,それらに関連な`基底線$により,互いに整列するモノトスル。 しかる後、各~glyphに対し, %A, %D を決定する。 同じ要素にて、異なる~fontの~glyphが利用されることもあるので、すべての~glyphが同じ %A, %D になるとは限らないことに注意。 行内~boxが~glyphを一つも包含しない場合、 要素の最初の可用~fontの %A, %D を伴うような,`支柱$(横幅 0 の不可視な~glyph)を包含するものと見なされる。 ◎ User agent must align the glyphs in a non-replaced inline box to each other by their relevant baselines. Then, for each glyph, determine the A and D. Note that glyphs in a single element may come from different fonts and thus need not all have the same A and D. If the inline box contains no glyphs at all, it is considered to contain a strut (an invisible glyph of zero width) with the A and D of the element’s first available font.

各~glyphに対し、加えられる “行間” [ %L = `line-height$p − ( %A + %D ) ]が決定される。 %L の半分は %A の上側に,もう半分は %D の下側に加えられ、`基底線$の~glyphとその行間による[ 総~高さ `A'^V = %A + %L ÷ 2 / 総~深さ `D'^V = %D + %L ÷ 2 ]を与える。 ◎ Still for each glyph, determine the leading L to add, where L = line-height - AD. Half the leading is added above A and the other half below D, giving the glyph and its leading a total height above the baseline of A' = A + L/2 and a total depth of D' = D + L/2.

注記: %L は負にもなり得る。 ◎ Note. L may be negative.

行内~boxの縦幅は、すべての~glyphと, それらの上下~各~側の半~行間を囲い込むので、正確に `line-height$p に等しくなる。 子~要素の~boxは、この縦幅には波及しない。 ◎ The height of the inline box encloses all glyphs and their half-leading on each side and is thus exactly line-height. Boxes of child elements do not influence this height.

置換されない要素の[ ~margin / ~border / ~padding ]は、行l~box計算には~~関与しないが,依然として,行内~boxの周囲に描画される。 ゆえに、 `line-height$p により指定された縦幅が,要素に包含される~boxの内容~縦幅より小さい場合には、[ ~padding/~border ]の背景と色が,連接している行l~boxの中まで “拡幅”され得ることになる。 ~UAは、各~boxを文書~順序で描画するべきである。 したがって、後続の行lの~borderは,先行する行lの~borderや~textの上に塗られることになる。 ◎ Although margins, borders, and padding of non-replaced elements do not enter into the line box calculation, they are still rendered around inline boxes. This means that if the height specified by line-height is less than the content height of contained boxes, backgrounds and colors of padding and borders may "bleed" into adjoining line boxes. User agents should render the boxes in document order. This will cause the borders on subsequent lines to paint over the borders and text of previous lines.

注記: ~CSS2は、何が行内~boxの`内容~区画$とされるかについては定義しない(`10.6.1$secを見よ)。 したがって、背景や~borderが描かれる所は,~UAにより異なることもある。 ◎ Note. CSS 2 does not define what the content area of an inline box is (see 10.6.1 above) and thus different UAs may draw the backgrounds and borders in different places.

注記: OpenType / TrueType ~fontを利用する実装は、 %A, %D に対し, (現在の要素の~font~sizeに拡縮した後の)[ ~fontの OS/2 ~tableによる計量 “sTypoAscender”, “sTypoDescender” ]を利用することが推奨される。 これらの計量が無い下では、[ HHEA ~tableによる計量 “Ascent”, “Descent” ]が利用されるべきである。 ◎ Note. It is recommended that implementations that use OpenType or TrueType fonts use the metrics "sTypoAscender" and "sTypoDescender" from the font’s OS/2 table for A and D (after scaling to the current element’s font size). In the absence of these metrics, the "Ascent" and "Descent" metrics from the HHEA table should be used.

10.8.2. `line-height^p ~prop

◎名 `line-height@p ◎値 `normal$v | `number$t | `length$t | `percentage$t ◎初 `normal$v ◎適 すべての要素 ◎ all elements ◎継 される ◎百 要素~自身の~font~sizeを基準にする。 ◎ refer to the font size of the element itself ◎算 指定d値 — ただし、 `length$t/`percentage$t 値は絶対~長さに解決される ◎ for <length> and <percentage> the absolute value; otherwise as specified ◎順 文法に従う ◎ア 離散的 ◎表終

内容が`行内~level$の要素から構成されるような,`塊~容器~要素$に対しては:

  • `line-height$p は,要素の中の行l~boxたちの必要最小限な行高(~boxの縦幅)を指定する。 最小な行高は、`基底線$の上側の最小~縦幅, 下側の最小~深さの和である
  • 各~行l~boxは、 `支柱@( strut ) と呼ばれる仮想の~box — 要素の[ `font-size^p, `line-height$p ]~propを伴う,横幅 0 の行内~box — から開始されたかのようになる(この名前は TeX に~~由来する)。
◎ On a block container element whose content is composed of inline-level elements, line-height specifies the minimal height of line boxes within the element. The minimum height consists of a minimum height above the baseline and a minimum depth below it, exactly as if each line box starts with a zero-width inline box with the element’s font and line height properties. We call that imaginary box a "strut." (The name is inspired by TeX.).

~fontの`基底線$の上下側の 高さ, 深さ は、~font内に包含されている計量と見做される(詳細は、~CSS3に)。 ◎ The height and depth of the font above and below the baseline are assumed to be metrics that are contained in the font. (For more details, see CSS level 3.)

`行内~box$に対しては、 `line-height$p は,行高の計算に利用される縦幅を指定する。 ◎ On a non-replaced inline element, line-height specifies the height that is used in the calculation of the line box height.

この~propに対する各種 値の意味は: ◎ Values for this property have the following meanings:

`normal@v
~UAは、使用~値を要素の~fontに基づく “適度な” 値に設定する。 値は `number$t と同じ意味を持つ。 `normal^v に推奨される使用~値は、 1.0 〜 1.2 である。 ◎ Tells user agents to set the used value to a "reasonable" value based on the font of the element. The value has the same meaning as <number>. We recommend a used value for normal between 1.0 to 1.2. The computed value is normal.
`length$t
指定された長さは、行高の計算に利用される。 ◎ The specified length is used in the calculation of the line box height. Negative values are illegal.
`number$t
~propの使用~値は、この数~値と要素の~font~sizeとの積になる。 ◎ The used value of the property is this number multiplied by the element’s font size. Negative values are illegal. The computed value is the same as the specified value.
`percentage$t
~propの`算出d値$は、この百分率~値と要素の~font~sizeとの積になる。 ◎ The computed value of the property is this percentage multiplied by the element’s computed font size. Negative values are illegal.

`line-height$p に対する負な値は合法でない。

下の例の 3 つの規則による結果の行高は、どれも同じになる: ◎ The three rules in the example below have the same resultant line height:

div {
  line-height: 1.2;    /* 実数( `number^t ) */
  font-size: 10pt
}
div {
  line-height: 1.2em;  /* 長さ( `length^t ) */
  font-size: 10pt
}
div {
  line-height: 120%;   /* 百分率( `percentage^t ) */
  font-size: 10pt
}

要素が,複数の~fontで描画される~textを包含する場合、~UAは, `line-height$p に対する `normal$v 値を最大な~font~sizeに則って決定してもヨイ。 ◎ When an element contains text that is rendered in more than one font, user agents may determine the normal line-height value according to the largest font size.

注記: 塊~容器~box内のすべての行内~boxにおいて[ ( `normal^v 以外の) `line-height$p 値は互いに同じ ]かつ[ 利用している最初に可用な~fontも互いに同じ ](かつ,容器~内には 置換d要素, `行内-塊$, 等も無い)場合、上述により、連続する行lたちの互いの`基底線$は,正確に `line-height$p ずつ離れるようになる。 これは、例えば~tableなど,~columnたちを — それらの内容~textに,~columnごとに異なる~fontが利用されるときでも — 互いに整列させる必要があるときに,重要になる。 ◎ Note. When there is only one value of line-height (other than normal) for all inline boxes in a block container box and they all use the same first available font (and there are no replaced elements, inline-block elements, etc.), the above will ensure that baselines of successive lines are exactly line-height apart. This is important when columns of text in different fonts have to be aligned, for example in a table.

10.8.3. `vertical-align^p ~prop

◎名 `vertical-align@p ◎値 `baseline$v | `sub$v | `super$v | `top$v | `text-top$v | `middle$v | `bottom$v | `text-bottom$v | `percentage$t | `length$t ◎初 `baseline$v ◎適 `行内~level$の要素 / `table-cell^v 要素 ◎ inline-level and table-cell elements ◎継 されない ◎百 要素~自身の `line-height$p を基準にする。 ◎ refer to the line-height of the element itself ◎算 指定d値 — ただし、 `length$t/`percentage$t 値は絶対~長さに解決される ◎ for <percentage> and <length> the absolute length, otherwise as specified ◎順 文法に従う ◎ア 離散的 ◎表終

この~propは、行内~levelの要素により生成される~boxに対する,[ 行l~boxの内側における縦方向の位置決め ]に影響する。 ◎ This property affects the vertical positioning inside a line box of the boxes generated by an inline-level element.

注記: この~propの値は、~tableの文脈では異なる意味になる。 詳細は、 § ~table縦幅の~algo にあたられたし。 ◎ Note. Values of this property have different meanings in the context of tables. Please consult the section on table height algorithms for details.

以下に定義される各種 値は、親~行内~要素, および[ 親~塊~容器~要素の`支柱$ ]に関してのみ意味を持つ。 ◎ The following values only have meaning with respect to a parent inline element, or to the strut of a parent block container element.

以下の定義において,整列に利用される~boxは、`行内~box$に対しては,縦幅が `line-height$p にされた(~boxの~glyphと各~側の半~行間を包含している)~boxであり、他のすべての要素に対しては,その`~margin~box$である。 ◎ In the following definitions, for inline non-replaced elements, the box used for alignment is the box whose height is the line-height (containing the box’s glyphs and the half-leading on each side, see above). For all other elements, the box used for alignment is the margin box.

`baseline@v
~boxの`基底線$を,親~boxの基底線に整列する。 基底線を持たない~boxに対しては、下端`~margin辺$を親の基底線に整列する。 ◎ Align the baseline of the box with the baseline of the parent box. If the box does not have a baseline, align the bottom margin edge with the parent’s baseline.
`middle@v
~boxの縦方向の中点を,親~boxの`基底線$から親の`~x-height$の半分だけ上方の所に整列する。 ◎ Align the vertical midpoint of the box with the baseline of the parent box plus half the x-height of the parent.
`sub@v
~boxの`基底線$を,親の~boxの下付文字に対する適正な位置まで下げる(この値は、要素の~textの~font~sizeに効果を及ぼすことはない) ◎ Lower the baseline of the box to the proper position for subscripts of the parent’s box. (This value has no effect on the font size of the element’s text.)
`super@v
~boxの`基底線$を,親の~boxの上付文字に対する適正な位置まで上げる(この値は、要素の~textの~font~sizeに効果を及ぼすことはない)。 ◎ Raise the baseline of the box to the proper position for superscripts of the parent’s box. (This value has no effect on the font size of the element’s text.)
`text-top@v
~boxの上端を,親の`内容~区画$の上端(`10.6.1$secを見よ)に整列する。 ◎ Align the top of the box with the top of the parent’s content area (see 10.6.1).
`text-bottom@v
~boxの下端を,親の`内容~区画$の下端(`10.6.1$secを見よ)に整列する。 ◎ Align the bottom of the box with the bottom of the parent’s content area (see 10.6.1).
`percentage$t
~boxを,この距離( `line-height$p 値の百分率)だけ上げる(正な値)/下げる(負な値)。 値 `0%^v は `baseline$v と同じ意味になる。 ◎ Raise (positive value) or lower (negative value) the box by this distance (a percentage of the line-height value). The value '0%' means the same as baseline.
`length$t
~boxを,この距離だけ上げる(正な値)/下げる(負な値)。 値 `0px^v は `baseline$v と同じ意味になる。 ◎ Raise (positive value) or lower (negative value) the box by this distance. The value 0cm means the same as baseline.

以下に定義される各種 値は、要素を行l~boxに相対的に整列する。 要素の子は,要素に相対的に整列されることもあるので(したがって子孫も同様になる)、これらの値は,`整列-済み下位tree$の限界域を利用する。 行内~要素の `整列-済み下位tree@ は、その要素, および そのすべての子~行内~要素のうち[ `vertical-align$p の算出d値が `top$v / `bottom$v でない ]ものの`整列-済み下位tree$を包含する。 `整列-済み下位tree$の上端(下端)は、その下位tree内の~boxのうち,最も高い上端(下端)である。 ◎ The following values align the element relative to the line box. Since the element may have children aligned relative to it (which in turn may have descendants aligned relative to them), these values use the bounds of the aligned subtree. The aligned subtree of an inline element contains that element and the aligned subtrees of all children inline elements whose computed vertical-align value is not top or bottom. The top of the aligned subtree is the highest of the tops of the boxes in the subtree, and the bottom is analogous.

`top@v
`整列-済み下位tree$の上端を,行l~boxの上端に整列する。 ◎ Align the top of the aligned subtree with the top of the line box.
`bottom@v
`整列-済み下位tree$の下端を,行l~boxの下端に整列する。 ◎ Align the bottom of the aligned subtree with the bottom of the line box.

`inline-table^v の`基底線$は、~tableの最初の~rowの基底線とする。 ◎ The baseline of an inline-table is the baseline of the first row of the table.

`行内-塊$ %B の`基底線$は、[ %B の `overflow$p ~propの算出d値 ~EQ `visible^v ]かつ[ %B 内に`~flow内$にある行l~boxはある ]ならば,それらの行l~boxのうち最後のものの`基底線$とする。 他の場合は %B の下端~margin辺とする。 ◎ The baseline of an inline-block is the baseline of its last line box in the normal flow, unless it has either no in-flow line boxes or if its overflow property has a computed value other than visible, in which case the baseline is the bottom margin edge.