1. 序論
◎非規範的~CSSによる~layoutには、 種々の~layout計算に利用される自動的~sizingを与える概念として, いくつか異なるものがある。 この文書では、 次を定義する: ◎ CSS layout has several different concepts of automatic sizing that are used in various layout calculations. This section defines\
- この仕様に示す~layoutの挙動を他の~moduleに利用される計算に結び付け易くするための, いくぶん精確な各種用語 ◎ some more precise terminology to help connect the layout behaviors of this spec to the calculations used in other modules,\
- 作者がこれらの~size計算による結果の寸法を要素にアテガえるようにするための,[ `width$p, `height$p ]~prop用の新たな~keyword。 ◎ and some new keywords for the width and height properties to allow authors to assign elements the dimensions resulting from these size calculations.
この仕様には説明図が必要だ。 `1938$issue を見よ。 ◎ This spec needs illustrations! See issue.
1.1. ~module間の相互作用
この~moduleは、[ `CSS2$r § 10 / `CSS3COL$r ]にて定義される,次に挙げる特能を拡張する ⇒# `width$p, `height$p, `min-width$p, `min-height$p, `max-width$p, `max-height$p, `column-width$p ◎ This module extends the width, height, min-width, min-height, max-width, max-height, and column-width features defined in [CSS2] chapter 10 and in [CSS3COL]
この~moduleにおける `box-sizing$p ~propの定義は、 `CSS-UI-3$r におけるそれに取って代わる。 ◎ The definition of the box-sizing property in this module supersedes the one in [CSS-UI-3].
1.2. 値~定義
【 この節の内容は `~CSS日本語訳 共通~page@~CSScommon#values$に移譲。 】
2. 各種用語
座標~軸と寸法に関係する主要な各種用語のうち一部は、 `CSS Writing Modes^cite `§ 抽象的な~boxの各種用語@~CSSWM#abstract-box$ にて定義される。 ◎ Some key terminology related to coordinate axises and dimensions is defined in CSS Writing Modes 3 § 6 Abstract Box Terminology.
- `~size@ ( `size^en )
- 1 次元または 2 次元の測定: [ `行内~size$, `塊~size$ ]の総称†, あるいは 【物理的な,言い換えればページに相対的な】[ `横幅$, `縦幅$ ]の総称†。 ◎ A one- or two-dimensional measurement: a block size and/or inline size; alternatively a width and/or height.
-
【† すなわち,次のいずれかの解釈があり得る: 】
- 次に挙げるいずれか ⇒# 横幅のみ/ 縦幅のみ/ 横幅か縦幅のうち,どちらかは不定だが片方のみ/ 横幅, 縦幅 それぞれに対し/ 横幅と縦幅の組( “それぞれに対し” とは対照的に,両者についての記述が相関している)
- あるいは、 前項の[ 横幅/縦幅 ]を[ `行内~size$/`塊~size$ ]に読み替えたときの,いずれか。
どの解釈が妥当になるかは, ~sizeという語が現れる文脈に依存するが、 通例的には, “それぞれに対し” が妥当になることが多い (一般に、[ 縦幅か横幅どちらか不定な事例/ 縦幅と横幅が相関している事例 ]は,稀にしかなく、 横幅のみならば,もっと明確に “横幅” と指定されよう)。
例えば ⇒ “A の~sizeが条件 P を満たすならば,その~sizeが B の~sizeになる” ◎終 のような記述があるとき、 縦幅, 横幅どちらの~sizeか指定されてない(どちらに解釈しても妥当である), かつ 条件 P が縦幅, 横幅について独立に解釈し得る(縦幅, 横幅が相関していない)ならば、 “横幅, 縦幅 それぞれに対し” の解釈が既定になろう。 しかしながら ⇒ “B の~sizeは A の~sizeの ある整数倍になる” ◎終 のように,[ 縦, 横どちらも同じ整数倍なのかどうか(縦と横が相関しているかどうか), 言い回しとして曖昧になる場合 ]もあるかもしれない — そのような場合、 何らかの注釈を加えて明確化することになろう。
また、 当の文脈がどこまでにわたるか(すなわち、~sizeという語が指すものが一貫するか)も, より広い文脈に依存する。
- `内縁~size@ ( `inner size^en )
- `~box$の`内容~box$の`~size$。 ◎ The content-box size of a box.
- 【 ~layoutした結果の~sizeを表すとは限らない — ~layout計算の文脈においては、 一般に,[ 当の~sizeを指定している`~sizing~prop$の算出d値に基づく~size ]を指すことになろう (対して、 結果の~sizeは使用~値に基づく)。 】
- `外縁~size@ ( `outer size^en )
- `~box$の`~margin~box$の`~size$。 ◎ The margin-box size of a box.
- 【 ~marginは負にもなり得るので, 理論上は この~sizeも負になり得ることになるが、 そうなる事例が (~layout結果においては常に 0 以上になるとしても、 この用語を~layout計算に利用している仕様における,その計算の中で) あり得るかどうかは,文脈に依存するかもしれない。 】
- `確定的@ な~size( `definite size^en )
-
内容の~layoutを遂行せずに決定できる~size — すなわち、 次に挙げるいずれか: ◎ A size that can be determined without performing layout; that is,\
- `length$t 値(長さ) ◎ a <length>,\
- ~textの測定n(行-折返ngは考慮しない下での) ◎ a measure of text (without consideration of line-wrapping),\
- `初期~包含塊$の~size ◎ a size of the initial containing block, or a <percentage>\
- `percentage$t 値(百分率)その他の公式 (`CSS2$r `§ 10.3.3@~CSS2J#blockwidth$ による, 置換されない塊に対する “収まるよう伸張する” ~sizingなど) で与えられる~sizeであって,`確定的$な~sizeのみに基づいて解決されるもの。 ◎ or other formula (such the “stretch-fit” sizing of non-replaced blocks [CSS2]) that is resolved solely against definite sizes.
- 加えて,`絶対的に位置され$た要素の`包含塊$の~sizeは、 常に,その要素に関して`確定的$になる。 ◎ Additionally, the size of the containing block of an absolutely positioned element is always definite with respect to that element.
- `不定@ な~size( `indefinite size^en )
- `確定的$でない~size。 `不定$な`可用な空間$は、 本質的に無限である。 ◎ A size that is not definite. Indefinite available space is essentially infinite.
- 注記: `内在的~sizing$を与える~keyword — `max-content$v など — は、 子たちを~lay-outすることなく — 例:`~size封込め$や子が無いことに因り — 決定できる場合でも,不定になる。 ◎ Note: intrinsic sizing keywords such as max-content are indefinite, even if they can be determined without laying out the children e.g. due to size containment or lack of children.
- ~boxに `可用な空間@ ( `available space^en )
- ~boxを~lay-outする際に利用し得る空間を表現する~sizeであり、 それが関与する整形~文脈の規則により決定される。 ~boxに可用な空間は、 通例的には,~boxの`包含塊$が[ `確定的$ならば その測定/ `不定$ならば無限~size ]になる。 `可用な空間$は、[ `最小-内容 拘束$/`最大-内容 拘束$ ]†として与えられる場合もある — その場合、 ~boxは,その拘束の下で~lay-outされるよう強制される。 【† 両~拘束が同時に与えられることもあろう。】 ◎ A size representing the space into which a box is laid out, as determined by the rules of the formatting context in which it participates. The space available to a box is usually either a measurement of its containing block (if that is definite) or an infinite size (when it is indefinite). Available space can alternatively be either a min-content constraint or a max-content constraint, which forces boxes laid into it to be laid out under that constraint.
- 所与の~sizeに `収まるよう伸張した~size@ ( `stretch fit into^en ) 【`伸張して収まる~size$】
- 所与の~sizeから[ 当の次元において~boxに算出された[ ~margin(相殺しない, `auto^v は 0 と扱うとする), ~border, ~padding ]]を(外縁~sizeがきっちり収まるよう)減算した結果を,(内縁~sizeが負にならないよう) 0 以上に切上げた結果で与えられる。 ◎ The stretch fit into a given size is that size, minus the box’s computed margins (not collapsed, treating auto as zero), border, and padding in the given dimension (such that the outer size is a perfect fit), and flooring at zero (so that the inner size is not negative).
- 注記: これは、[ `CSS2$r `§ 10.3.3@~CSS2J#blockwidth$ による,通常~flowにおける`置換され$ない塊 ]に対する `~autoS$v 横幅を計算するために利用される公式である。 ◎ Note: This is the formula used to calculate the auto widths of non-replaced blocks in normal flow in CSS2.1§10.3.3.
- `~fallback~size@ ( `fallback size^en )
- 一部の~sizing~algoは、 無限~sizeの下では,上手く働かない。 この場合、代わりに `~fallback~size$ が利用される。 他から指定されない限り、 これは,`初期~包含塊$の~sizeに等しくされる。 ◎ Some sizing algorithms do not work well with an infinite size. In these cases, the fallback size is used instead. Unless otherwise specified, this is the size of the initial containing block.
2.1. 自動~box~size
~CSSには、 自動的に決定される~size(`~autoS$v ~sizing規則による結果の~size)として, 次に挙げる 4 種がある(どれになるかは文脈に依存する): ◎ There are four types of automatically-determined sizes in CSS (sizes resulting from auto sizing rules, depending on context):
- `伸張して収まる~size@ ( `stretch-fit size^en )
- `伸張して収まる行内~size@ ( `stretch-fit inline size^en )
- `伸張して収まる塊~size@ ( `stretch-fit block size^en )
- 所与の軸において,~boxの`外縁~size$が`可用な空間$を埋めたとき占めることになる`~size$ — 言い換えれば、 `可用な空間$に`収まるよう伸張した~size$。 ただし、 `可用な空間$が`確定的$である場合に限る — `不定$な場合には定義されない。 ◎ The size a box would take if its outer size filled the available space in the given axis; in other words, the stretch fit into the available space, if that is definite. Undefined if the available space is indefinite.
- 注記: `行内-軸$に対しては、 これは `CSS2$r `§ 10.3.5@~CSS2J#float-width$ において “`available width^en (可用な横幅)” とも称されており, 同 `§ 10.3.3@~CSS2J#blockwidth$ の規則により算出される。 ◎ Note: For the inline axis, this is called the “available width” in CSS2.1§10.3.5 and computed by the rules in CSS2.1§10.3.3.
- 注記: この~sizeを孕む計算は、 `可用な空間$が`不定$になり得るときには, ~fallback用の挙動を指定する必要がある。 ◎ Note: Calculations involving this size need to specify a fallback behavior for when the available space is indefinite if that happens to be possible.
- `最大-内容~size@ ( `max-content size^en )
-
可用な空間が無限なときの,所与の軸における~boxの “理想的な” `~size$。 通例的には、 所与の軸において,[ ~boxの内容が~boxに収まる ]ために必要な最も小さい`~size$になる。 すなわち、[ ~overflowを避けつつ,埋められない空間は最小限にしたとき ]の~size。 ◎ A box’s “ideal” size in a given axis when given infinite available space. Usually this is the smallest size the box could take in that axis while still fitting around its contents, i.e. minimizing unfilled space while avoiding overflow.
- `最大-内容 行内~size@ ( `max-content inline size^en )
- `行内-軸$における,~boxの “理想的な” `~size$。 通例的には、[ `自動折返し機会$( “非強制改行” )は`~~採用しない^em下で,~boxの内容が~boxに収まる ]ために必要な最も狭小な`行内~size$になる( `§ 内在的~sizeの決定$を見よ)。 ◎ The box’s “ideal” size in the inline axis. Usually the narrowest inline size it could take while fitting around its contents if none of the soft wrap opportunities within the box were taken. (See § 5 Intrinsic Size Determination.)
- 注記: これは、 `CSS2$r `§ 10.3.5@~CSS2J#float-width$ においては “`preferred width^en(選好d横幅)” と称され, 同 `§ 17.5.2.2@~CSS2TABLE#auto-table-layout$ においては “`maximum cell width^en (最大 cell 横幅)” と称されているものである。 ◎ Note: This is called the “preferred width” in CSS2.1§10.3.5 and the “maximum cell width” in CSS2.1§17.5.2.2.
- `最大-内容 塊~size@ ( `max-content block size^en )
- `塊-軸$における,~boxの “理想的な” `~size$。 通例的には、 ~layout後の内容の`塊~size$になる。 ◎ The box’s “ideal” size in the block axis. Usually the block size of the content after layout.
- `最小-内容~size@ ( `min-content size^en )
-
名目上は、 ~overflowが生じないようにする下で, ~boxが占め得る最も小さい~size (それ以上狭めると~overflowする~size)。 正式には、[ ~boxが`最小-内容 拘束$の下で~sizeされたとき ]の~size — `§ 内在的~sizeの決定$を見よ。 ◎ Nominally, the smallest size a box could take that doesn’t lead to overflow that could be avoided by choosing a larger size. Formally, the size of the box when sized under a min-content constraint, see § 5 Intrinsic Size Determination.
- `最小-内容 行内~size@ ( `min-content inline size^en )
- `行内-軸$における`最小-内容~size$。 概して,`自動折返し機会$を`すべて~~採用する^em下で、 内容が~boxに収まるときの`行内~size$。 ◎ The min-content size in the inline axis. Typically, the inline size that would fit around its contents if all soft wrap opportunities within the box were taken.
- 注記: これは、 `CSS2$r `§ 10.3.5@~CSS2J#float-width$ においては “`preferred minimum width^en(選好d最小~横幅)” と称され, 同 `§ 17.5.2.2@~CSS2TABLE#auto-table-layout$ においては “`minimum content width^en(最小~内容~横幅)” と称されているものである。 ◎ Note: This is called the “preferred minimum width” in CSS2.1§10.3.5 and the “minimum content width” in CSS2.1§17.5.2.2.
- `最小-内容 塊~size@ ( `min-content block size^en )
- `塊-軸$における`最小-内容~size$。 [ `塊~容器$/~table/`行内~box$ ]に対しては、 `最大-内容 塊~size$に等価になる。 ◎ The min-content size in the block axis. For block containers, tables, and inline boxes, this is equivalent to the max-content block size.
- `内容が収まる~size@ ( `fit-content size^en )
- `内容が収まる行内~size@ ( `fit-content inline size^en )
- `内容が収まる塊~size@ ( `fit-content block size^en )
-
- 所与の軸に`可用な空間$が`確定的$な場合 ⇒ `max^op( `最小-内容~size$, `min^op( `最大-内容~size$, `伸張して収まる~size$ ) ) 【!clamp(min-content size, stretch-fit size, max-content size)】 ◎ If the available space in a given axis is definite, equal to clamp(min-content size, stretch-fit size, max-content size) (i.e. max(min-content size, min(max-content size, stretch-fit size))).\
- `最小-内容 拘束$の下で~sizeしている場合 ⇒ `最小-内容~size$に等しい ◎ When sizing under a min-content constraint, equal to the min-content size.\
- 他の場合 ⇒ `最大-内容~size$に等しい ◎ Otherwise, equal to the max-content size in that axis.
-
注記: これ【`内容が収まる行内~size$】は、[ `CSS2$r `§ 10.3.5@~CSS2J#float-width$ / `CSS3COL$r § 3.4† ]においては, “`shrink-to-fit^en(収まるよう縮短した)” 横幅と称されている。
【† `過去~version@~TR/2011/CR-css3-multicol-20110412/#pseudo-algorithm$においては。 `現在の~version@~CSSMCOL#pseudo-algorithm$では、 `複-柱~容器$の “使用~幅” (使用~値としての`行内~size$)に相当する。 】
◎ Note: This is called the “shrink-to-fit” width in CSS2.1§10.3.5 and CSS Multi-column Layout § 3.4. - `内在的~size@ ( `intrinsic size^en )
- [ `最大-内容~size$/`最小-内容~size$ ]の総称。 すなわち、 首に内容の~sizeから~~決まる~size。 この用語は、 一部では[ 首に,これらいずれかの~sizeから導出される~size ]を指すときにも利用される。 ◎ A max-content size or min-content size, i.e. a size arising primarily from the size of the content. (Some uses of this term may refer also to sizes derived primarily from one of these two sizes.)
- `置換され$る要素の`内在的~size$は、 その`生来な寸法$から導出されることが多い。 ◎ Replaced elements frequently derive their intrinsic size from their natural dimensions.
2.2. 内在的~size供与
- ~boxが`供与する@ 〜 ~size( `contribute^en / `contribution^en )
- 〜 に記された部分(あるいは文脈)に応じて,[ `最大-内容 供与$, `最小-内容 供与$ ]のいずれかを表す。
- “供与する” とは、 ~boxが,[[ 自身が関与する~layout文脈 ]における~layout計算の必要 ]に応じて[ 自身の~sizeを,その~layout文脈に `供与する^em ]ことを意味する。
- 【 この項目は,原文には存在しないが、 意味の補完, および翻訳による言い回しと各種~定義との関係を明瞭にするため, この訳に導入している。 】
- `最大-内容 供与@ ( `max-content contribution^en )
- ~boxが、 その`包含塊$に`供与する$,`最大-内容~size$。 ◎ The size that a box contributes to its containing block’s max-content size.
- `最小-内容 供与@ ( `min-content contribution^en )
- ~boxが、 その`包含塊$に`供与する$,`最小-内容~size$。 ◎ The size that a box contributes to its containing block’s min-content size.
- `内在的~size供与@ ( `intrinsic size contribution^en )
- [ `最大-内容 供与$/`最小-内容 供与$ ]の総称,あるいは、 内容に基づいて同様に計算される~size供与。 ◎ A max-content contribution, min-content contribution, or similarly-calculated content-based size contribution.
内在的~size供与は、 ~boxの`外縁~size$に基づく — この目的においては、 `auto^v ~marginは 0 に扱われる。 ◎ Intrinsic size contributions are based on the outer size of the box; for this purpose auto margins are treated as zero.
2.3. 内在的~size拘束
- `最大-内容 拘束@ ( `max-content constraint^en )
- ~boxに その`最大-内容 供与$を生産させるような,~boxの`包含塊$が~boxに課す~sizingの拘束。 【例えば、~sizeの上限】 ◎ A sizing constraint imposed by the box’s containing block that causes it to produce its max-content contribution.
- `最小-内容 拘束@ ( `min-content constraint^en )
- ~boxにその`最小-内容 供与$を生産させるような,~boxの`包含塊$が~boxに課す~sizingの拘束。 ◎ A sizing constraint imposed by the box’s containing block that causes it to produce its min-content contribution.
- `選好d縦横比@ ( `preferred aspect ratio^en )
- ~boxに内来的な[ 横幅 : 縦幅 ]による比率。 様々な~sizing~algoは、 アリな限り,[ 他の入力を尊守しつつ,この縦横比と整合する~sizeを生産する ]よう仕向けられる。 ~boxの`選好d縦横比$は,他が指定されない限り、 ~boxに`生来な縦横比$があるならば それになり,その`内容~box$に適用される。 ほとんどの~boxには、 `選好d縦横比$は無い。 ◎ A width:height ratio inherent to a box, which biases various sizing algorithms to produce a size consistent with that aspect ratio insofar as possible while honoring other sizing inputs. Unless otherwise specified, a box’s preferred aspect ratio is its natural aspect ratio if it has one and is applied to its content box. Most boxes do not have a preferred aspect ratio.
3. ~box~sizeの指定-法
3.1. 各種 ~sizing~prop
この節は、 各種 `~sizing~prop@ — `width$p, `height$p, `min-width$p, `min-height$p, `max-width$p, `max-height$p — を定義する。 これらがとり得る値は `§ ~sizingを与える値@#sizing-values$ にて定義される。 ◎ This section defines the sizing properties width, height, min-width, min-height, max-width, and max-height. Their potential values are defined in the next section, § 3.2 Sizing Values: the <length-percentage [0,∞]>, auto | none, min-content, max-content, and fit-content() values.
注記: これらの~propの`~flow相対$な各種 別名~propは、 `CSS-LOGICAL-1$r に定義される。 【`参照@~CSSLOGICAL#dimension-properties$】 【これらも “`~sizing~prop$である” とされる。】 ◎ Note: Additional flow-relative aliases to these properties are defined in [CSS-LOGICAL-1].
~sizing~propの各~pair(例: `width$p, `height$p )用に 略式~propを定義したい所だが、 `page$at `size$d 記述子 `CSS-PAGE-3$r と命名が競合する。 なので、 これは~level 4 に先送りされた。 この問題を解決する方法について示唆があれば歓迎する。 `論点@https://github.com/w3c/csswg-drafts/issues/820$を見よ。 ◎ We would like to define shorthands for each pair of sizing properties (e.g. width and height) but there is a naming conflict with the @page size descriptor [CSS-PAGE-3], so this has been deferred to Level 4. Suggestions on how to resolve this problem are welcome, see discussion.
3.1.1. 選好d~size~prop: `width^p, `height^p
◎名 `width@p, `height@p ◎値 `~autoS$v | `length-percentage [0,∞]$t | `min-content$v | `max-content$v | `~fit-contentLP$v | `calc-size()$t ◎初 `~autoS$v ◎適 すべての要素 — ただし,`置換され$ない`行内$【すなわち`行内~box$】は除く。 ◎ all elements except non-replaced inlines ◎継 されない ◎百 包含塊の[ 横幅/縦幅 ]に相対的 ◎ relative to width/height of containing block ◎算 指定されたとおり — ただし `length-percentage$t 値は算出される ◎ as specified, with <length-percentage> values computed ◎順 文法に従う ◎ア 算出d値の型による — `fit-content$f の中も含め。 ◎ by computed value type, recursing into fit-content() ◎論 `size^p ◎表終(`物理的$な)[ `width$p / `height$p ]~propは、 ~boxに選好される[ `横幅@ ( `width^en )/ `縦幅@ ( `height^en ) ]を指定する。 `選好d~size@ ( `preferred size^en )は、 これらの総称であり,文脈に応じて適切な方を指す。 ◎ The width and height (physical) properties specify the preferred width and height of the box, respectively.
3.1.2. 最小~size~prop: `min-width^p, `min-height^p
◎名 `min-width@p, `min-height@p ◎論 `min-size^p ◎表終他の欄は、 `width$p と同じ【なので,この訳では省略する】。 ◎ Value: auto | <length-percentage [0,∞]> | min-content | max-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> Initial: auto Applies to: all elements that accept width or height Inherited: no Percentages: relative to width/height of containing block Computed value: as specified, with <length-percentage> values computed Canonical order: per grammar Animatable: by computed value, recursing into fit-content() Logical property group: min-size
[ `min-width$p / `min-height$p ]~propは、 ~boxの[ `最小~横幅@ ( `minimum width^en, 略して `min width^en ) / `最小~縦幅@ ( `minimum height^en, 略して `min height^en ) ]を指定する。 `最小~size@ ( `minimum size^en, 略して `min size^en ) は、 これらの総称であり,文脈に応じて適切な方を指す。 ◎ The min-width and min-height properties specify the minimum width (or “min width”) and minimum height (or “min height”) of the box, respectively.
【 `最小~size$は、 `最大~size$とともに,この訳による追加。 他の仕様にも,この意味を表す用語として現れているため、 追加している。 】
注記: 初期~値 `~autoS$v は、 新たに~~導入された — `CSS2$r における初期~値は `0^v であったが。 ◎ Note: The initial value of auto is new; in [CSS2] the initial value was zero.
3.1.3. 最大~size~prop: `max-width^p, `max-height^p
◎名 `max-width@p, `max-height@p ◎値 `none$v | `length-percentage [0,∞]$t | `min-content$v | `max-content$v | `~fit-contentLP$v | `calc-size()$t ◎初 `none$v ◎論 `max-size^p ◎表終他の欄は、 `width$p と同じ【なので,この訳では省略する】。 ◎ Applies to: all elements that accept width or height Inherited: no Percentages: relative to width/height of containing block Computed value: as specified, with <length-percentage> values computed Canonical order: per grammar Animatable: by computed value, recursing into fit-content() Logical property group: max-size
[ `max-width$p / `max-height$p ]~propは、 ~boxの[ `最大~横幅@ ( `maximum width^en, 略して `max width^en ) / `最大~縦幅@ ( `maximum height^en, 略して `max height^en ) ]を指定する。 `最大~size@ ( `maximum size^en, 略して `max size^en ) は、 これらの総称であり,文脈に応じて適切な方を指す。 ◎ The max-width and max-height properties specify the maximum width (or “max width”) and maximum height (or “max height”) of the box, respectively.
3.2. ~sizingを与える値
- `length-percentage [0,∞]$t
- [ `length$t / `percentage$t ]を利用して,~boxの~sizeを指定する。 `box-sizing$p ~propは、[ `内容~box$, `~border~box$ ]のどちらが測定されるかを指示する。 ◎ Specifies the size of the box using <length> and/or <percentage>. The box-sizing property indicates whether the content box or border box is measured.
- 百分率は、 ~boxの`包含塊$の~size — 横幅, 縦幅のうち適切な方 — を基準に解決される。 [ 当該の軸において,`包含塊$の~sizeが~boxの~sizeに依存する ]場合に[ 百分率を解決するための特別な規則 ]については、 関連な各種~layout~moduleを見よ。 ◎ Percentages are resolved against the width/height, as appropriate, of the box’s containing block. If, in a particular axis, the containing block’s size depends on the box’s size, see the relevant layout module for special rules on how to resolve percentages.
- 負な値は無効。 ◎ Negative values are invalid.
- `~autoS@v
- [ `width$p / `height$p ]においては、 `自動的~size@ を指定する。 これは、[ `塊~size$を指す場合には `自動的な塊~size@ / `行内~size$を指す場合には `自動的な行内~size@ ]とも称される。 これを計算する方法は、 関連な各種~layout~moduleを見よ。 ◎ For width/height, specifies an automatic size (automatic block size/automatic inline size). See the relevant layout module for how to calculate this.
-
[ `min-width$p / `min-height$p ]においては、 `自動的な最小~size@ を指定する — 加えて: ◎ For min-width/min-height, specifies an automatic minimum size.\
- 使用~値は、 関連な~layout~moduleにより他が定義されない限り, `0^v に解決される。 ◎ Unless otherwise defined by the relevant layout module, however, it resolves to a used value of 0.\
- `解決d値$は、 後方-互換性を得るため, `CSS2$r による`表示~型$の~box — 塊~box, 行内~box, 行内~塊, すべての~table~layout~box — に対しては 0 になるとする。 生成される~boxが無いときにも 0 になるとする。 ◎ For backwards-compatibility, the resolved value of this keyword is zero for boxes of all [CSS2] display types: block and inline boxes, inline blocks, and all the table layout boxes. It also resolves to zero when no box is generated.
- `none@v
- ~boxの~sizeは、 制限されない。 【すなわち,`最大~size$は無限大/`最小~size$は 0 】 ◎ No limit on the size of the box.
- `min-content@v
- 関連な軸における`最小-内容~size$を利用する。 これは、 ~boxの`塊~size$用には — 他が指定されない限り — ~boxの`自動的~size$に等価になる。 ◎ Use the min-content size in the relevant axis; for a box’s block size, unless otherwise specified, this is equivalent to its automatic size.
- `max-content@v
- 関連な軸における`最大-内容~size$を利用する。 これは、 ~boxの`塊~size$用には — 他が指定されない限り — ~boxの`自動的~size$に等価になる。 ◎ Use the max-content size in the relevant axis; for a box’s block size, unless otherwise specified, this is equivalent to its automatic size.
- `~fit-contentLP@v
-
`可用な空間$を指定された引数に置換してから,`内容が収まる~size$用の公式を適用した結果 — すなわち,次の結果 — を利用する ⇒ `max^op( `min-content$v, `min^op( `max-content$v, `length-percentage$t ) ) 【!min(…, max(… 】 ◎ Use the fit-content formula with the available space replaced by the specified argument, i.e. min(max-content, max(min-content, <length-percentage>)),\
この公式の `length-percentage^t 引数は、 `length-percentage^t 値を~~単体で与えたときと正確に同じに解決される。 ◎ where the <length-percentage> argument is resolved exactly as for <length-percentage> values standing alone.
- 負な `length-percentage$t 値は無効。 ◎ Negative <length-percentage> values are invalid.
- `calc-size@f
- `calc-size()@~CSSVAL5#funcdef-calc-size$t を見よ。 ◎ See <calc-size()>.
- 注記: `calc-size$f の中では、 ~keyword `none$v は,利用-可能でない。 ◎ Note: The none keyword is not usable within calc-size().
すべての事例において、 使用~値は,`内縁~size$が負にならない所まで切上げられる。 ◎ In all cases, the used value is floored to preserve a non-negative inner size.
注記: 次に挙げる値は、 ~level 3 による新たな値である ⇒# `min-content$v, `max-content$v, `fit-content$f, `calc-size$f【この訳による補完】 ◎ Note: The min-content, max-content, and fit-content() values are new in Level 3.
注記: これにより、 `flex-basis$p ~propも,これら新たな値をとり得ることになる — その値は <'`width$p'> への参照により定義されているので。 ◎ Note: The flex-basis property hereby also gains these new keywords, as its values are defined by reference to <width>.
注記: この節は、 以前は[ `stretch$v / `fit-content$v ]を[ `伸張して収まる~size$ / `内容が収まる~size$ ]を表現する~keywordとして定義していた。 これらの~keywordは、 `可用な空間$が`不定$な状況に より良く働くようにするため, ~level 4 へ先送りされた (追加的な `contain$v ~keywordとともに — それは、 `stretch$v と同様に挙動するが,`選好d縦横比$があれば それを保全する)。 ◎ Note: This section previously defined stretch and fit-content as keywords representing the stretch-fit size and fit-content size, respectively. These keywords have been deferred to Level 4 (along with an additional contain keyword that behaves similarly to stretch but preserves the preferred aspect ratio, if any) to better work out the implications in situations with indefinite available space.
3.2.1. “`auto^v として挙動する”
共通な用語を与えるため、[ `width$p / `height$p ]が次に該当する場合を総称して,~propは `~autoとして挙動する@ という:
- `~autoS$v に算出される場合
- [ `~autoS$v が指定されていたかのように挙動する ]ものと定義されている場合 (塊に対する百分率による縦幅 ( `CSS2$r `§ 10.5@~CSS2J#the-height-property$ ) が不定~sizeに対し解決される事例など)
注記: ~layoutの挙動を定義している旧来の仕様 — 特に `CSS2$r — の注釈文には、 明示的に[ `width$p / `height$p の算出d値は `~autoS$v である ]ことを条件としている箇所もあるかもしれない。 そのような事例のうち一部は,[ `~autoとして挙動する$ことを意味している ]ものと解釈されるべきであり、 また,そのように更新するよう~CSS~WGに報告されるべきである。 ◎ Note: Legacy spec prose defining layout behavior, particularly in [CSS2], might explicitly refer to width/height having a computed value of auto as a condition; some of these cases should be interpreted as meaning behaves as auto, and reported to the CSSWG for updating.
この節を、 新たな用語 `自動的~size$への参照に置換する。 ◎ Replace this section with references to the new term automatic size.
3.2.2. 浮動体の包含-法/排他-法
◎非規範的`塊~box$の境界は,概して その前にある`浮動体$も~~囲うが、 作者は,~boxが[ 自前の(子孫)浮動体を包含する/ 外側からの浮動体を排他する ]ことが必要になることもときどきある。 塊~layoutに対しては、 `display$p を `flow-root^v に指定して,~boxを`整形~文脈$の根にすれば、 この挙動を得られる。 ◎ Although block box boundaries are typically pervious to floats, sometimes an author needs them to contain their own (descendant) floats or to exclude floats from outside. For Block layout, specifying display: flow-root will make the box a formatting context root, which has this behavior.
注記: [ ~flex/格子/~table ]~layoutに関与している~boxは、 この挙動を自動的に備える。 ◎ Note: Boxes participating in Flex, Grid, or Table layout will automatically have this behavior.
3.3. ~sizingの~~対象になる~box辺: `box-sizing^p ~prop
◎名 `box-sizing@p ◎値 `content-box$v | `border-box$v ◎初 `content-box^v ◎適 [ `width$p / `height$p ]を受容する,すべての要素 ◎ all elements that accept width or height ◎継 されない ◎百 受容しない ◎算 指定された~keyword ◎順 文法に従う ◎ア 離散的 ◎表終`box-sizing$p ~propは、 固定的~size( `length$t や `percentage$t など)を[ `内容~box$, `~border~box$ ]のどちらにアテガうかを定義する。 それは、 すべての~sizing~prop — `flex-basis$p も含む — の解釈に影響する。 ◎ The box-sizing property defines whether fixed sizes (such as <length>s and <percentage>s) are assigned to the content box or to the border box. It affects the interpretation of all sizing properties, including flex-basis.
各種~値の意味は: ◎ Values have the following meanings:
- `content-box@v
- 各種~sizing~propに `length-percentage$t として指定された~sizeは、 ~boxの`内縁~size$ — ~margin, ~border, ~paddingは除外された~size — を表現し,`内容~box$に適用される。 ~boxの[ ~padding / ~border ]は、 指定された[ `width$p, `height$p ]の外側に~lay-outされ, 描かれる。 ◎ Sizes specified on sizing properties as <length-percentage> represent the box’s inner sizes, excluding the margins/border/padding: they are applied to the content box. The padding and border of the box are laid out and drawn outside the specified width and height.
- 注記: これが、 `CSS2$r により指定される `width^p, `height^p の挙動であり,既定になる。 ◎ Note: This is the behavior of width and height as specified by CSS2.1, and is thus the default.
- `border-box@v
- 各種~sizing~propに `length-percentage$t として指定された~sizeは、 ~boxの,視覚的に~~現れる~size — ~border, ~paddingは含むが ~marginは除外された~size — を表現し,`~border~box$に適用される。 ~boxの[ ~padding / ~border ]は、 指定された[ `width$p, `height$p ]の内側に~lay-outされ, 描かれる。 `内容~box$は、 残りの空間を埋めるように~sizeされる — 0 以上に切上げられる下で。 ◎ Sizes specified on sizing properties as <length-percentage> represent the box’s visually-apparent sizes, including the borders/padding (but not margin): they are applied to the border box. The padding and border of the box are laid out and drawn inside the specified width and height, with the content box sized to fill the remaining space, floored at zero.
- 内容の~sizeは、[ 横幅, 縦幅 ]のそれぞれについて,[ ~sizing~propに指定された~size ]から[ ~border, ~padding ]の~sizeを減算して計算される。 内容の~sizeは,`負になれない@#sizing-values$ので、 この計算は 0 以上に切上げられる。 ◎ The content width and height are calculated by subtracting the border and padding widths of the respective sides from the specified <length-percentage>. As the content width and height cannot be negative, this computation is floored at zero.
- 具体的には、 `getComputedStyle()$c を通して公開される使用~値も,`~border~box$を参照する。 ◎ Used values, as exposed for instance through getComputedStyle(), also refer to the border box.
`box-sizing$p は、[ 生の `length-percentage$t 値, `fit-content$f などの関数-記法~内で利用される値 ]の両者に影響する — 対照的に、[ `~autoS$v, `min-content$v ]などの数量的でない値には,波及しない(他が指定されない限り)。 ◎ Values affected by box-sizing include both raw <length-percentage> values and those used in functional notations such as fit-content(). In contrast, non-quantitative values such as auto and min-content are not influenced by the box-sizing property (unless otherwise specified).
例えば,次の~styleは、 内容~boxの~sizeを `100px^v に, ~border~boxの~sizeを `120px^v に設定する: ◎ For example, the following properties set the content-box size of the box to 100px, with the border-box size calculating to 120px:
.box {
box-sizing: content-box; /* 既定 */
width: 100px;
padding-left: 10px;
border-left: 10px solid;
}
他方, `border-box$v に変更した場合、 ~border~boxの~sizeを `100px^v に, 内容~boxの~sizeを `80px^v に設定する: ◎ On the other hand, by changing to border-box, the border-box is set to 100px, with the content-box size calculating to 80px:
.box { box-sizing: border-box; width: 100px; padding-left: 10px; border-left: 10px solid; }
`内縁~size$は負になれないので、[ `padding$p, `border-width$p ]の和が[ 指定された~border~boxの~size ]を超える場合, ~boxは指定された値より大きくなる。 次の事例では, `width$p に `100px^v が指定されているが、 内容~boxの~sizeは `0px^v 以上に切上げられる結果, `100px^v が指定されている~border~boxの~sizeは `120px^v になる: ◎ The inner size can’t be less than zero, so if the padding + border is greater than the specified border-box size, the box will end up larger than specified. In this case, the content-box size will floor at 0px so the border-box size ends up at 120px, even though width: 100px is specified for the border box:
.box {
box-sizing: border-box;
width: 100px;
padding-left: 60px;
border-left: 60px solid;
/*
~paddingと~borderの和は `120px^v
◎
padding + border = 120px
*/
}
この例は、 `box-sizing^p を利用して, 容器 `div^e の内側を[ 固定的~sizeの~borderを伴う 2 個の `div^e ]で横方向に均等に分かつ — さもなければ、 追加的な~markupを要するような。 ◎ This example uses box-sizing to evenly horizontally split two divs with fixed size borders inside a div container, which would otherwise require additional markup.
見本~CSS: ◎ sample CSS:
div.container { margin:1em; width:90% } div.split { box-sizing:border-box; width:50%; border:1em silver ridge; float:left; }
見本~HTML片: ◎ sample HTML fragment:
<div class="container"> <div class="split">この div は左半分を占めるべきである。</div> <div class="split">この div は右半分を占めるべきである。</div> </div>
見本~CSS/~HTMLによるデモ: ◎ demonstration of sample CSS and HTML:
上の 2 個の `div^e は、 それぞれが(~borderも含め)容器の内容~横幅の 50% を占めるよう, 横並びに現れるべきである。 上下に堆積される場合、 利用中の~browserは `box-sizing$p を~supportしていない。 ◎ The two divs above should appear side by side, each (including borders) 50% of the content width of their container. If instead they are stacked one on top of the other then your browser does not support box-sizing.
注記: `button$e など,ある種の~HTML要素では、 `border-box$v の挙動が既定になる。 どの要素がこの挙動を備えるかの詳細は、 ~HTMLを見よ。 【参照:`~HTML~UA~stylesheet@~HTMLrendering#the-css-user-agent-style-sheet-and-presentational-hints$】 ◎ Note: Certain HTML elements, such as button, default to border-box behavior. See HTML for details on which elements have this behavior.
旧来の~CSS仕様における用語[ `横幅$ / `縦幅$ / `最小~横幅$ / `最小~縦幅$ / `最大~横幅$ / `最大~縦幅$ ]は、 一般に — 他が指示されない限り — ~boxの`内縁~size$(`内容~box$の~size)を指している。 ◎ In legacy CSS specifications, the terms width, height, minimum (min) width, minimum (min) height, maximum (max) width, and maximum (max) height generally refer to the inner size (content-box size) of a box unless otherwise indicated.
`CSS2$r `§ 視覚-整形~modelの詳細@~CSS2J#visudet$ における,これらの用語の明示的な一義化については、 `CSS-UI-3$r `§ ~box~modelの変更-法@~TR/css-ui-3/#box-sizing$ ( `box-sizing^p ~prop) を見よ†。 ◎ Refer to CSS User Interface 3 § 4.1 Changing the Box Model: the box-sizing property for an explicit disambiguation of these terms for the Visual formatting model details section of [CSS2].
【† 要約すると, `border-box$v の場合には、[ § 視覚-整形~modelの詳細 にて定義される各種~sizingの公式において,それらの用語を指している値(各種 `~sizing~prop$の指定d値) ]は,[ 予め~border, ~paddingを減算して 0 以上に切上げた結果 ]と見做される。 】
仕様~策定者は、 横幅や縦幅などの用語の利用が多義的になるのを避けるべきである — 各~事例ごとに 適切に[ `内縁~size$ / `外縁~size$ / `~border~box$の~size / `~sizing~prop$の`算出d値$ / 等々 ]を明示的に指すように~linkして。 ◎ To avoid ambiguities, specification authors should avoid ambiguous uses of terms such as width or height without further qualification, and should explicitly refer and link to the inner size, the outer size, the size of the border-box, the computed value of the sizing properties, etc, as appropriate for each case.
3.4. 柱~sizingを与える新たな値
◎名 `column-width$p ◎新値 `min-content$v2 | `max-content$v2 | `~fit-contentLP$v2 ◎算 指定されたとおり — ただし `length-percentage$t 値は算出される ◎ as specified, with <length-percentage> values computed ◎ア 算出d値の型による ◎表終【 原文には, `fit-content()^v の引数を成す `length-percentage^t に範囲が指定されていないが、 `column-width^p の値~定義と整合するためには,必要になろう。 】
`column-width$p 用の値に利用される新たな~keywordは、 最適とされる柱~幅を指定する: ◎ When used as values for column-width, the new keywords specify the optimal column width:
【 “最適( `optimal^en )” の意味は `column-width$p の記述を見よ。 】
- `min-content@v2
- 最適な柱~幅を[ `複-柱~容器$の内容の`最小-内容 行内~size$ ]として指定する。 ◎ Specifies the optimal column width as the min-content inline size of the multi-column container’s contents.
- `max-content@v2
- 最適な柱~幅を、`複-柱~容器$の内容の `最大-内容 行内~size$ として指定する。 ◎ Specifies the optimal column width as the max-content inline size of the multi-column container’s contents.
- `~fit-contentLP@v2
- 最適な柱~幅を、次の結果として指定する ⇒ `max^op( `最小-内容~size$, `min^op( `最大-内容~size$, `length-percentage$t ) ) 【!min(…, max(… 】 ◎ Specifies the optimal column width as min(max-content size, max(min-content size, <length-percentage>))
- 【 原文には [0,∞] が無いが, `width$p と同様に必要になろう。 】
注記: 柱~幅は、 柱ごとに変わることは決してない。 柱~幅が(上で与えた~keywordにより)`複-柱~容器$の内容に基づく場合、 その内容~すべてが考慮され, 計算した結果の幅は【当の容器~内の】すべての柱から共有される。 ◎ Note: The column width never varies by column. When the column width is informed by the multi-column container’s contents (as in the keywords above), all of its contents are taken under consideration and the calculated width is shared by all the columns.
4. 外在的~sizeの決定
`外在的~sizing@ は、要素【が生成する~box】の~sizeを — その内容は無視して — それが置かれた文脈に基づいて決定する。 ◎ Extrinsic sizing determines sizes based on the context of an element, without regard for its contents.
4.1. 百分率による~sizing
百分率は、~boxの`包含塊$を基準に~boxの~sizingを指定する。 ◎ Percentages specify sizing of a box with respect to the box’s containing block.
例えば次の~markupでは: ◎ For example, in the following markup:
<article style="height: 60em"> <figure style="height: 50%;"> <img style="height: 50%;"> </figure> </article>
- `article^e の縦幅は`確定的$な `60em^v なので、 `figure^e の高さは,その 50% を成す `30em^v になる。 ◎ the <figure> would be 30em tall = 50% of the definite 60em height of the <article>
- `img^e の高さは、 `figure^e の縦幅 (`確定的$な長さを基準に解決される百分率なので、確定的になる) の 50% を成す `15em^v になる。 ◎ the <img> would be 15em tall = 50% of the <figure>’s height (which is itself definite because it’s a percentage resolved against a definite length)
`包含塊$の~sizeが その内容の~sizeに依存するとき,百分率を解決する方法の詳細は、 `§ 百分率で~sizeされた~boxの内在的~供与@#cyclic-percentage-contribution$ を見よ。 ◎ See § 5.2.1 Intrinsic Contributions of Percentage-Sized Boxes for details on how to resolve percentages when the size of the containing block depends on the size of its content.
5. 内在的~sizeの決定
`内在的~sizing@ は、 要素が置かれた文脈は無視して,要素の~sizeを要素の内容に基づいて決定する。 ◎ Intrinsic sizing determines sizes based on the contents of an element, without regard for its context.
5.1. 内在的~size
各~軸に対し — 以下, “~size” は、 その軸における~sizeを表す — ~boxの[ `最小-内容~size$/`最大-内容~size$ ]は、 `浮動体$が[ ~size 0 の / ~size無限な ]包含塊~内で, その`選好d~size$に `~autoS$v が与えられていた (かつ, `最小~size$, `最大~size$どちらも与えられていない) とするとき占める~sizeになる (言い換えれば、 “収まるよう縮短した” ときの[ 最小~size/最大~size ])。 ◎ The min-content size of a box in each axis is the size it would have if it was a float given an auto preferred size in that axis (and no minimum or maximum size in that axis) and if its containing block was zero-sized in that axis. (In other words, the minimum size it has when sized as “shrink-to-fit”.) ◎ The max-content size of a box in each axis is the size it would have if it was a float given an auto preferred size in that axis (and no minimum or maximum size in that axis), and if its containing block was infinitely-sized in that axis. (In other words, the maximum size it has when sized as “shrink-to-fit”.)
[ `最小-内容~size$/`最大-内容~size$ ]は、 `内在的~size$と総称される。 ◎ The min-content size and max-content size are collectively referred to as the intrinsic sizes.
注記: ~boxに`選好d縦横比$がある場合、 一方の次元における~size拘束が もう一方に転換され, ~boxの `~autoS$v ~sizeに影響し得ることに注意。 `CSS2$r `§ 置換d要素の~sizing@~CSS2J#replaced-size$ を見よ。 ◎ Note: When the box has a preferred aspect ratio, size constraints in the opposite dimension will transfer through and can affect the auto size in the considered one. See CSS2§10.
この仕様は、 `浮動体$の~sizeを決定する方法は,定義しない。 `CSS2$r を参照rされたし。 しかしながら,[ `置換され$る要素のうち,`生来な~size$を伴わないもの ]の`内在的~size$は、 以下に定義される: ◎ This specification does not define how to determine the sizes of floats. Please refer to [CSS2]. However, the intrinsic sizes of replaced elements without natural sizes are defined below:
- ~boxは`選好d縦横比$を伴う場合: ◎ If it has a preferred aspect ratio:
- `最小-内容~size$には 0 を利用する。 ◎ For the min-content size, use zero.
-
`最大-内容~size$には: ◎ For the max-content size:
- `行内-軸$における`可用な空間$は`確定的$である場合、 その~sizeに`収まるよう伸張した~size$を`行内~size$に利用した上で, `塊~size$は その結果から縦横比を利用して計算する。 ◎ If the available space is definite in the inline axis, use the stretch fit into that size for the inline size and calculate the block size using the aspect ratio.
-
他の場合,~boxの[ `min-width$p, `min-height$p ]の`算出d値$のうち:
- 片方だけ `length$t ならば、 その~sizeを利用した上で, 他方の次元は 縦横比を利用して計算する。
- 両方とも `length$t ならば、 各~次元ごとに前項と同様に計算した上で, 結果が大きくなる方を選ぶ。
注記: この事例は,以前は、 ~boxの `min-^p ~sizeではなく, 既定~size 300 × 150 から計算されていた。 こうした方がより良く挙動するものと予見され, ~Web互換になるものと見込まれるが、 問題があれば~CSS~WGまで~feedbackを~~寄せられたし。 ◎ Note: This case was previous calculated from a 300x150 default size, rather than the box’s min size. This is believed to be a better behavior, and likely to be Web-compatible, but please send feedback to the CSSWG if there are any problems.
- 他の場合、 `行内~size$には[ `初期~包含塊$の対応する次元の~size ]を利用し, 他方の次元は縦横比を利用して計算する。 ◎ Otherwise use an inline size matching the corresponding dimension of the initial containing block and calculate the other dimension using the aspect ratio.
- ~boxは`選好d縦横比$を伴わない場合: ◎ If it has no preferred aspect ratio:
-
[ `最小-内容~size$, `最大-内容~size$ ]どちらも: ◎ For both the min-content size and max-content size:
-
当の次元における~boxの`最小~size$ ( `min-width$p / `min-height$p ) の`算出d値$は `length$t になるならば、 その~sizeを利用する。 ◎ If the box has a <length> as its computed minimum size (min-width/min-height) in that dimension, use that size.
注記: この[ 作者が制御-可能な挙動 ]は、 `最小~size~prop$用の新たな値 `~autoS$v によりアリになった。 これは,より良い挙動を与えるものと予見されているが、 ~Web互換かどうかは,まだ明瞭でない — 問題があるなら,~CSS~WGに~feedbackを送信されたし。 ◎ Note: This author-controllable behavior is made possible by the new auto value for the min size properties. This is believed to be a better behavior, but it is not yet clear if it is Web-compatible, so please send feedback to the CSSWG if there are any problems.
- 他の場合、 当の次元が[ 横幅ならば `300px^v / 縦幅ならば `150px^v ]を利用する。 ◎ Otherwise, use 300px for the width and/or 150px for the height as needed.
-
[ 塊~level/行内~level ]の`置換され$る要素のうち[ `height$p, `width$p ]いずれかが`~autoとして挙動する$ものは[ 実質的には, 要素の`最大-内容~size$を利用するよう定義される ]ので ( `CSS2$r `§ 10.3.2@~CSS2J#inline-replaced-width$ )、 この仕様は,未定義であった[ `置換され$る要素が[ `height$p, `width$p どちらも`~autoとして挙動する$ ]事例 ]に上の規則を適用する。 ◎ Since a block-level or inline-level replaced element whose height or width behaves as auto is effectively defined to use its max-content size (CSS2§10.3.2), this specification applies the rules above to the undefined case of a replaced element whose height and width both behave as auto.
注記: この仕様は、 `浮動体$の~sizeを決定する方法は定義しない。 詳細は、 `CSS2$r, その【当の要素の】`表示~型$に関連な各種~CSS仕様, あるいは既存の実装を参照rされたし。 将来の仕様は、 ~CSS2による “定義と呼べるほどでもないもの” を置換して, これを詳細に定義することになる。 ◎ Note: This specification does not define how to determine the size of a float. Please refer to [CSS2], the relevant CSS specification for that display type, and/or existing implementations for further details. A future specification will define this in detail, replacing the CSS2 “definition”, such as it is.
~text入力~control — ~HTMLの[ `<input type=text>^c, `textarea$e ]要素など — に対する `~autoS$v ~sizeは,概して固定されるが、[ 内容に基づく`内在的~size$を決定するとき ]には,そのような要素の内容も利用され得る — `置換され$ない塊~容器に対するときと同じく。 したがって,`~sizing~prop$の[ `min-content$v / `max-content$v ]~keywordは、 ~form~controlのうち[ 自身の値を[ 自身の~boxの中に包含される~text ]として描画するもの ]に対しては,内容に基づく~sizeを表現し、[ そのような~controlの可視な内容が — 定例の`置換され$ない要素と同様に — ~boxに収まる ]よう~sizeすることを許容する。 ◎ Although the auto size of text input controls such as HTML’s <input type=text> and <textarea> elements is typically a fixed size, the contents of such elements can be used to determine a content-based intrinsic size, as for non-replaced block containers. The min-content and max-content keywords of the sizing properties thus represent content-based sizes for form controls which render their value as text contained within their box, allowing such controls to size to fit their visible contents similarly to regular non-replaced elements.
この事例における内容は、入力~controlの値 ( `textarea$e の事例では その`生の値@~HEforms#concept-textarea-raw-value$ / `input$e の事例では その`値@~HTMLforms#concept-fe-value$) になるものと定義され,入力~controlの子である`~text連列$として扱われる — 場合によっては[ よりヒトが読み易い/地域化された ]表示~形式に形式変換された上で、 入力~controlに対し ( ~CSS~propや, ~UAに内部的な他の拘束に基づいて) 実際に折返ngが許容される所に限り,`自動折返し機会$を許容するように。 入力~controlに[ 仮入力~textが指名されていて【 `placeholder$a 属性などにより】, 値の表示~区画~内に重ねられる ]場合、 その~textも[ 内容に基づく~sizeを計算する目的 ]で測定される — 所与の時点で,仮入力~textは可視かどうかに応じて (したがって、 当の入力~controlの内容に基づく`内在的~size$は[ 仮入力~textが収まる~size, 値が収まる~size ]の両者~以上になる)。 ◎ The content in this case is defined to be the input control’s values (the raw value in the case of textarea, or the value in the case of input), possibly transformed to a more human-readable and/or localized display format, which is then treated as child text sequences of the input control, allowing soft wrap opportunities only where the input control would actually allow wrapping (whether keyed off of CSS properties or other, UA-internal constraints). If the input control has designated placeholder text to be overlaid in its value display area, then that text is also measured for the purpose of calculating the content-based size—whether or not the placeholder text is visible at the moment. (Thus the content-based intrinsic size of the input control is the larger of the size to fit the placeholder text and the size to fit the value.)
~UAは、 ~form~controlの`内在的~size$に対し — [ ~caretに足る空間を確保する, あるいは~form~controlの利用-能を保守する ]ためとして — 何らかの最小を施行してもヨイ ( 1 個のゼロ幅~文字を包含するために要求される~size, あるいは~touch~targetに利用-可能な最も小さい~size, など)。 ◎ The UA may enforce a minimum (such as the size required to contain a single zero-width character, or the smallest usable size of a touch target) on the form control’s min-content and max-content sizes to ensure sufficient space for the caret and otherwise maintain usability of the form control.
注記: これは、 `iframe$e その他の[ `置換され$る, かつ内容を包含している要素 ]にまで拡張され得る (`論点@~CSSissue/1771$を見よ)。 が、 ~text入力が大多数の利用事例であり, 文書に内部的であるゆえに加わる最低限の複雑さになる。 ◎ Note: This might be extended to iframe or other content-containing replaced elements (see discussion), but text inputs are a major use-case; and being document-internal, have the least additional complications.
5.2. 内在的~供与
各~軸における,~boxの[ `最小-内容 供与$/`最大-内容 供与$ ]は、[ 次のような`浮動体$が在ったとするとき ]の[ 浮動体の`内容~box$の~size ]になる ⇒ [ 当の~boxのみを包含している ]~AND[ `~autoS$v により~sizeされている ]~AND[ `包含塊$の~sizeは[ 0 /無限 ](同順)] ◎ A box’s min-content contribution/max-content contribution in each axis is the size of the content box of a hypothetical auto-sized float that contains only that box, if that hypothetical float’s containing block is zero-sized/infinitely-sized.
注記: この仕様は、 これらの~sizeを決定する方法は精確に定義しない。 詳細は、 次を参照rされたし ⇒# `CSS2$r / その【当の~boxの】`表示~型$に関連な各種~CSS仕様 / `百分率の取扱い規則@#percentage-sizing$(下に述べる)/ 既存の実装 ◎ Note: This specification does not define precisely how to determine these sizes. Please refer to [CSS2], the relevant CSS specification for that display type, the rules for handling percentages (below), and/or existing implementations for further details.
5.2.1. 百分率で~sizeされた~boxの内在的~供与
ある~boxの`包含塊$の~sizeが~boxの`内在的~size供与$に依存していて, ~boxは百分率で~sizeされているために、 循環依存が生じることもある。 そのような~boxの`内在的~size供与$を計算するときは (内容に基づく`自動的な最小~size$用の計算も含む)、 `循環な百分率~size@ — [ `内在的~size供与$と同じ軸における何らかの~size ]を基準に解決される百分率~値 — は,以下に従って特別に解決される。 ◎ Sometimes the size of a percentage-sized box’s containing block depends on the intrinsic size contribution of the box itself, creating a cyclic dependency. When calculating the intrinsic size contribution of such a box (including any calculations for a content-based automatic minimum size), a percentage value that resolves against a size in the same axis as the intrinsic size contribution (a cyclic percentage size) is resolved specially:
所与の~box %~box の所与の軸における[ `最大~size~prop$/`選好d~size~prop$ ] %~prop に式として[ `百分率を包含して$いて,それは`循環な百分率$である ]を満たすものが指定された場合 (例: `10%^v や `calc(10px + 0%)^v ): ◎ ↓
- `(a)@cY %~box は`置換され$ない場合, %~prop の値~全体は: ◎ If the box is non-replaced, then the entire value of any max size property or preferred size property (width/max-width/height/max-height) specified as an expression containing a percentage (such as 10% or calc(10px + 0%)) that is cyclic\
-
%~box の`内在的~size供与$を計算する目的に限り,
%~prop の`初期~値$として扱われる。
例えば, %~box に
`width$p: `calc(20px + 50%)^v
が与えられている下では、 %~box の`最大-内容 供与$は[ `width^p は `~autoS$v にされていた ]かのように計算される。 (しかしながら,実際に %~box を~sizeする間は、 百分率は通例通り尊守される。) ◎ is treated for the purpose of calculating the box’s intrinsic size contributions only as that property’s initial value. For example, given a box with width: calc(20px + 50%), its max-content contribution is calculated as if its width were auto. (The percentage is honored as usual, however, during the actual sizing of the box itself; see below.) - `(b)@cY %~box は`置換され$る場合, %~prop の値~全体は: ◎ Likewise, if the box is replaced, then the entire value of any max size property or preferred size property specified as an expression containing a percentage that is cyclic\
- %~box の`最大-内容 供与$を計算する目的に限り, %~prop の`初期~値$として扱われる。 ◎ is treated for the purpose of calculating the box’s max-content contributions only as that property’s initial value.
- `(c)@cY %~box は`置換され$る場合,`循環な百分率$は: ◎ If the box is replaced, a cyclic percentage in the value of any max size property or preferred size property (width/max-width/height/max-height),\
- 当の軸における`最小-内容 供与$を計算するときは、 0 を基準に解決される (これが,~HTMLにおけるどの要素に適用されるかは、 `§ 圧縮-可能な置換される要素@#min-content-zero$ を見よ)。 %~box は`選好d縦横比$を伴う場合,結果の`最小-内容 供与$は、[ もう一方の軸における`最小~横幅$を与える `length-percentage$t ]を — それが百分率である場合は, 0 を基準に解決した上で — `選好d縦横比$を通して転換した結果~以上に切上げられる。 【したがって,百分率ならば 0 以上に切上げられることになる。】 ◎ is resolved against zero when calculating the min-content contribution in the corresponding axis. (See § 5.2.2 Compressible Replaced Elements for a list of which elements in HTML this applies to.) If the box also has a preferred aspect ratio, then this min-content contribution is floored by any <length-percentage> minimum size from the opposite axis—resolving any such percentage against zero—transferred through the preferred aspect ratio.
- 百分率は 0 を基準に解決してから転換しているが、 代わりに 包含塊を基準に解決するべきか? 論点( `6341$issue )を見よ。 ◎ Should we resolve transferred percentages against their containing block instead of zero before transferring them? See discussion.
- ~UAは、~UIに関する考慮点 — ある種の~UI要素 (例: `select$e 要素の `dropdown arrow^en ) が可視であり続けることを確保するなど — に基づいて,`最小-内容 供与$をさらに切上げてもヨイ。 ◎ The UA may additionally floor the min-content contribution based on UI considerations, such as ensuring certain UI elements remain visible (for example, the dropdown arrow on a select).
- 注記: `最小-内容 供与$は、 いつもどおり,当の軸における`最小~横幅$以上に切上げられる。 ◎ Note: The min-content contribution is, as always, also floored by the minimum size in its own axis.
- この規則は、[ 内容に基づく`自動的な最小~size$, それに対応する~size供与 ]を計算するときにも適用され,`確定的$な “指定d~size示唆” を得る。 ◎ This rule also applies when calculating a content-based automatic minimum size or its corresponding size contribution, yielding a definite “specified size suggestion”.
-
例えば,
`input$e 要素に
`width$p: `calc(50% + 50px)^v
がアテガわれている場合、 その`最小-内容 供与$は, `50px^v に横方向の[ ~margin, ~border, ~padding ]を加えたものになる。 ◎ For example, an input assigned width: calc(50% + 50px) has a min-content contribution of 50px, plus any horizontal margin/border/padding. - `(d)@cY %~prop は`最小~size~prop$である場合: ◎ For the min size properties,\
- `内在的~size供与$を決定するときは、 `~margin$, `~padding$(, および`側溝$) 【に対する百分率】に加えて,`循環な百分率$も 0 を基準に解決される。 ◎ as well as for margins and paddings (and gutters), a cyclic percentage is resolved against zero for determining intrinsic size contributions.
上に与えた[ 循環な百分率による内在的~size供与 ]用の規則の要約 — 表t内の見出し (1), (2) は:
- (1) は、 `最小~size~prop$, および[ `~margin~prop$/`~padding~prop$ ]の場合
- (2) は、[ `最大~size~prop$/`選好d~size~prop$ ]の場合
`最小-内容 供与$ | `最大-内容 供与$ | ||
---|---|---|---|
(1) | `置換され$る要素 | 0 `(d)$cY | 0 `(d)$cY |
`置換され$ない要素 | 0 `(d)$cY | 0 `(d)$cY | |
(2) | `置換され$る要素 | 0 `(c)$cY | 初期~値 `(b)$cY |
`置換され$ない要素 | 初期~値 `(a)$cY | 初期~値 `(a)$cY |
次に, %~box の包含塊 %包含塊 の`内容^emの[ ~size, 位置 ]の使用~値を計算するときには、 他が指定されない限り: ◎ Then, unless otherwise specified, when calculating the used sizes and positions of the containing block’s contents:
-
百分率は、 %包含塊 の`塊-軸$における[ `最小~size$以外の~size ](すなわち、 ほとんどの~layout~modeにおいては[ `block-size$p / `max-block-size$p ]/ `~flex~layout$においては `flex-basis$p ) に因り循環依存が生じているときには, 解決されずに`~autoとして挙動する$とする: ◎ If the cyclic dependency was introduced due to a block-axis size other than a minimum size on the containing block (i.e. a block-size or max-block-size in most layout modes, or a flex-basis in flex layout) that causes it to depend on the size of its contents, the box’s percentage is not resolved and instead behaves as auto.
注記: `格子~駒$/`~flex駒$ は、この事例においても,百分率を解決できるようにしている。 ◎ Note: Grid items and flex items do allow percentages to resolve in this case.
- 他の場合の百分率は、 %包含塊 の~sizeを基準に解決されるとする。 ( %包含塊 の~sizeが %~box の結果の~sizeに基づいて解決し直されることはないので、 内容は %包含塊 を[ ~overflow/~underflow ]するかもしれない)。 ◎ Otherwise, the percentage is resolved against the containing block’s size. (The containing block’s size is not re-resolved based on the resulting size of the box; the contents might thus overflow or underflow the containing block).
注記: これらの規則は、これまで未定義であった `CSS2$r `§ 10.2@~CSS2J#the-width-property$, `§ 8.3@~CSS22/box.html#margin-properties$, `§ 8.4@~CSS22/box.html#padding-properties$ における循環依存の事例の挙動を指定する。 また, 同 `§ 10.5@~CSS2J#the-height-property$ による挙動は、 ~CSS2では述べられてない~layout~mode(`~flex~layout$など)の仕様により~~上書きされることにも注意。 ◎ Note: These rules specify the previously-undefined behavior of this cyclic case in CSS2§10.2, CSS2§8.3, and CSS2§8.4. Note also, the behavior in CSS2§10.5 is superseded in their respective specifications for layout modes (such as flex layout) not described in CSS2.
例えば次の~markupを考える: ◎ For example, in the following markup:
<article style="width: `min-content$v"> <aside style="width: 50%;"> LOOOOOOOOOOOOOOOOOOOONG </aside> </article>
`article^e の横幅を計算するとき, 内縁にある `aside^e の `width$p は `auto^v として挙動するので、 `article^e の横幅は,長い単語( "LOO...NG" )の横幅に設定される 【単語を中途で折り~~返せるよう指定されていない限り】。 `article^e の横幅は、 “~~実の” 【すなわち,後から得られる結果の】~layoutに依存しないので, `aside^e を解決するときには`確定的$と扱われる — その結果、 `aside^e の横幅は `article^e の半分に解決される 【 "LOO...NG" の半分は~overflowすることになる】 。 ◎ When calculating the width of the outer <article>, the inner <aside> behaves as width: auto, so the <article> sets itself to the width of the long word. Since the <article>’s width didn’t depend on "real" layout, though, it’s treated as definite for resolving the <aside>, whose width resolves to half that of the <article>.
次の例では: ◎ In this example,
<article style="height:auto"> <aside style="height: 50%;"> <div class=block style="height: 150px;"></div> </aside> <section style="height: 30px;"></section> </article>
塊~levelの要素に対する百分率による`塊~size$(この事例では `height$p )は,[ 内容に応じて~sizeされる包含塊の内側では,解決されない ]ものと定義されるため、 `aside^e に対する百分率による縦幅は,無視される — その結果、 正確に[ `~autoS$v が指定されていた ]かのように挙動する。 ◎ because the percentage block size (height, in this case) on block-level elements is defined to not resolve inside content-sized containing blocks, the percentage height on the <aside> is ignored, that is, it behaves exactly as if auto were specified.
`min-height$p が内在的であるときにも,百分率を確定的な `height$p を基準に解決させるのは、~open課題である。 (~CSS2には,内容に依存する `min-height$p 用の~keywordが無いが、 “内容に依存している縦幅” について一般に言明している — 技術的には、 これがそれに該当する。 これは新しいので、 異なる挙動にもできると~~考えられている。) ◎ Letting percentages still resolve against a definite height when the min-height is intrinsic is an open issue. (CSS2 has a general statement about "height depending on contents", which this technically is, even though CSS2 didn’t have content-dependent keywords for min-height. Since this is new, we think we could have this different behavior.)
`塊-軸$に対する百分率が[ ~sizeが自身の内容に依存するような包含塊 ]を基準にどう解決されるかを,いくつかの例で以下に~~説明する: ◎ The following examples illustrate how block-axis percentages resolve against a containing block whose size depends on its contents.
<article style="height:100px; min-height: min-content;"> <aside style="height: 50%;"> <div style="height: 150px;"></div> </aside> <section style="height: 30px;"></section> </article>
`article^e の初期~縦幅は指定された `100px^v なので、 `aside^e の百分率を解決した結果の高さは `50px^v になる。 しかしながら, `min-height$p は、 それを `height$p に見立てる下で計算するモノトスル。 これにより, `aside^e 上の百分率は`~autoとして挙動する$ようになる結果、 `aside^e の高さは `150px^v になる。 したがって内容の総~縦幅は `180px^v になる。 これは,指定された縦幅 `100px^v より大きいので、 `article^e の高さは `180px^v に調整されることになる。 ◎ The initial height of the <article> is 100px, as specified, which would make the <aside> 50px tall when it resolved its percentage. However, we must calculate the min-height, by substituting it in for height. This causes the percentage on the <aside> to behave as auto, so the <aside> ends up 150px tall. The total height of the contents is thus 180px. This is larger than the specified 100px height, so the <article> gets adjusted to 180px tall.
次に,百分率は、 `元々^emは縦幅(前の例の `100px^v )を基準に解決できていたので, 今度は縦幅 `180px^v を基準に解決され、 結果における `aside^e の高さは `90px^v になる。 ◎ Then, since the percentage could originally resolve against the (100px) height, it now resolves against the 180px height, so the <aside> ends up being 90px tall.
<article style="height:auto; min-height: min-content;"> <aside style="height: 50%;"> <div class=block style="height: 150px;"></div> </aside> <section style="height: 30px;"></section> </article>
上の事例の `aside^e に対する百分率は、
通常に解決されず,`~autoとして挙動する$
— その包含塊の縦幅は `~autoS$v であり,内容の~sizeに依存するので。
結果の `aside^e の縦幅は `150px^v になり、
`min-height$p は, `article^e の初期~縦幅 `180px^v を変更しない。
`height$p: `min-content$v;
は
`height$p: `auto^v;
と同様に動作する結果、同じ~sizeになる。
◎
In this case, the percentage on the <aside> won’t normally resolve, because the containing block’s height is auto (and thus depends on the size of its contents). Instead it behaves as auto, resulting in a height of 150px for the <aside>, and an initial height of 180px for the <article> The min-height doesn’t change this; height: min-content; acts similarly to height: auto; and results in the same sizes.
<article style="height:100px; min-height: min-content;"> <aside style="height: 200%;"> <div style="height: 150px;"></div> </aside> <section style="height: 30px;"></section> </article>
これは最初の例の変種であり、同様に計算を進めると: `aside^e は、 初期~時には高さ `200px^v ( 包含塊の縦幅 `100px^v の 200% )に算出される。 `min-height$p の効果を計算するときには、 百分率は`~autoとして挙動する$ので,高さ `150px^v になり、 包含塊の総 `min-content$v 縦幅は,高さ `180px^v になる。 これは `100px^v より大きいので、 `article^e は `180px^v に切詰められ, 百分率はこの新たな縦幅を基準に解決される。 その結果 `aside^e の高さは `360px^v になり, `article^e を~overflowすることになる。 ◎ This is a variation on the first code block, and follows a similar path; the <aside> initially wants to compute to 200px tall (200% of the 100px containing block height). When we calculate the effects of min-height, the percentage behaves as auto, causing it to become 150px tall, and the total min-content height of the containing block to be 180px tall. Since this is larger than 100px, the <article> gets clamped to 180px, the percentage resolves against this new height, and the <aside> ends up being 360px tall, overflowing the <article>
5.2.2. 圧縮-可能な置換される要素
`HTML$r `§ 置換される要素@~HTMLrendering#replaced-elements$ に挙げられた`置換され$る要素に加えて, 次に挙げる~HTML要素も[ 上述した `(c)$cY (百分率で~sizeされる`置換され$る要素の規則)の目的 ]においては`置換され$る要素と見なされ、 その[ `width$p / `height$p ]または[ `max-width$p / `max-height$p ]が循環な百分率~sizeで表出されるときには, その`最小-内容 供与$は圧縮され得る: ◎ In addition to the replaced elements listed in HTML§14.4 [HTML], the following HTML elements are also considered to be replaced elements for the purpose of the percentage-sized replaced element rule above, and can have their min-content contribution compressed when their width/height or max-width/max-height is expressed with a cyclic percentage size:
-
`input$e 要素のうち,その種別が “~buttonの様なもの” でないもの — これは、~UAに依存して変わり得る。 ◎ input with any type that is not "button-like"; this can vary depending on the UA.
特定0の~UAにおいて種別が “~buttonの様なもの” とは、 `button$e 要素と類似に表示され, かつ要素の~layoutを決定する実際の内容を包含できるものである。 ほとんどの~UA では、 要素の種別【 `type$a 属性】が[ `button^v / `submit^v / `reset^v / `color^v ]にされたものは, “~buttonの様なもの” になる。 一部の~UAでは、 特に種別 `file^v も,[ ~text入力(縮短-可能)と~button(~buttonの様なものなので、縮短-可能でない)の組合nで表示される ]ときには “~buttonの様なもの” になる。 ◎ A type is "button-like" in a particular UA if it displays similar to a button element, where it can contains actual content that determines the layout of the element. In most UAs, the "button", "reset", "submit", and "color" types are button-like; the "file" type is also partially button-like in some UAs, when it’s displayed as a combination of a text input (shrinkable) and a button (button-like, and thus not shrinkable).
- `select$e, `textarea$e, `progress$e, `meter$e, `marquee$e ◎ select, textarea, progress, meter, marquee.
これを[ `max-width^p / `max-height^p ]に適用することの[ ~web互換性, 実装の進捗 ]は、 [`6348$issue] にて追跡されている。 ◎ Tracking web-compat & implementation progress of applying this to max-width/height in Issue 6348. [Issue #6348]
X. 縦横比(~level 4)
【 編集上の都合により、 ~level 4 `CSS-SIZING-4$r `§ 縦横比@~SIZING4#ratios$ の和訳も,ここに与えることにする。 】
画像は`生来な縦横比$を有することが多い — ~CSS~layout~algoは、 要素を~sizeし直すとき,それを保全しようと試みる。 ◎ Images often have a natural aspect ratio, which the CSS layout algorithms attempt to preserve as they resize the element.
`aspect-ratio$p ~propは、 次を許容する ⇒# `置換され$ない要素に対し,この挙動を指定する/ `置換され$る要素に対し,実質的な縦横比を改める ◎ The aspect-ratio property allows specifying this behavior for non-replaced elements, and for altering the effective aspect ratio of replaced elements.
この節の詳細は、 依然として作業-中にある。 `選好d縦横比$を伴う`置換され$る要素 ]に対し,ここに指定される挙動が[ `~CSS2@~CSS2J$/ `~flex~layout@~CSSFLEX$/ `格子~layout@~CSSGRID$ ]仕様を組合せた要件による挙動と(この仕様による効果を伴わない下で)異なるならば、 それは誤りであり, ~CSS~WGに`報告される@https://github.com/w3c/csswg-drafts/issues$べきである 。 ◎ We are still working through the details of this section. If there is any behavior specified here that would cause replaced elements with a preferred aspect ratio to behave differently than they would under the requirements of the CSS2, Flex Layout, and Grid Layout specs combined (without this specification in effect), this is an error and should be reported to the CSSWG.
X.1. 内在的な縦横比: `aspect-ratio^p ~prop
◎名 `aspect-ratio@p ◎値 `~autoR$v || `ratio$t ◎初 `~autoR$v ◎適 次を除くすべての要素 ⇒ `行内~box$, `内部~ruby~box$, `内部~table~box$ ◎ all elements except inline boxes and internal ruby or table boxes ◎継 されない ◎百 受容しない ◎算 指定された~keyword/ 2 個の実数が成す~pair ◎ specified keyword or a pair of numbers ◎順 文法に従う ◎ア 算出d値の型による ◎表終この~propは、 ~boxの`選好d縦横比$を設定する。 それは、 `~autoS$v ~sizeの計算や一部の~layout関数に利用されることになる。 ◎ This property sets a preferred aspect ratio for the box, which will be used in the calculation of auto sizes and some other layout functions.
- `~autoR@v
- `生来な縦横比$を伴う`置換され$る要素は、 その縦横比を【~boxの`選好d縦横比$に】利用する。 他の場合、 ~boxの`選好d縦横比$は無い。 この縦横比を孕んでいる~size計算は、 常に`内容~box$の寸法とともに働く†。 ◎ Replaced elements with a natural aspect ratio use that aspect ratio; otherwise the box has no preferred aspect ratio. Size calculations involving the aspect ratio work with the content box dimensions always.
- 【† `box-sizing$p に `border-box$v が指定された場合でも、 `~border~box$ではなく`内容~box$の縦横比として扱われることになる。 】
- `ratio$t
- ~boxの`選好d縦横比$は、 指定された比率(横幅 ~DIV 縦幅)になる。 この縦横比を孕んでいる~size計算は、 常に, `box-sizing$p が指定する~boxの寸法とともに働く。 ◎ The box’s preferred aspect ratio is the specified ratio of width / height. Size calculations involving the aspect ratio work with the dimensions of the box specified by box-sizing.
- `ratio$t は`退化な比率$である場合、 この~propは,代わりに `~autoR$v として挙動する。 ◎ If the <ratio> is degenerate, the property instead behaves as auto.
- `auto^v && `ratio$t
- `~autoR$v と `ratio$t が一緒に指定された場合, `選好d縦横比$は指定された比率(横幅 ~DIV 縦幅)になるが、 `置換され$る要素である事例では,その`生来な縦横比$が代わりに利用される。 いずれの事例でも,この縦横比を孕んでいる~size計算は、 常に,`内容~box$の寸法とともに働く。 ◎ If both auto and a <ratio> are specified together, the preferred aspect ratio is the specified ratio of width / height unless it is a replaced element with a natural aspect ratio, in which case that aspect ratio is used instead. In all cases, size calculations involving this aspect ratio work with the content box dimensions always.
- `ratio$t は`退化な比率$である場合、 この~propは,代わりに `~autoR$v として挙動する。 ◎ If the <ratio> is degenerate, the property instead behaves as auto.
注記: `選好d縦横比$を伴わせることは、 ~boxを`置換され$る要素にするものではない。 `置換され$る要素に特有な~layout規則は、 一般に,`選好d縦横比$を伴う~boxには適用されない。 例えば,`置換され$ない, かつ`絶対的に位置され$た~boxは、 `選好d縦横比$を伴う場合でも, `justify-self$p に指定された `normal^v を `start$v ではなく `~stretchJS$v として扱う ( `CSS-ALIGN-3$r `§ 絶対的に位置された~box@~CSSALIGN#justify-abspos$ )。 ◎ Note: Having a preferred aspect ratio does not make a box into a replaced element; layout rules specific to replaced elements do not generally apply to non-replaced boxes with a preferred aspect ratio. For example, a non-replaced absolutely-positioned box treats justify-self: normal as stretch, not as start (CSS Box Alignment 3 § 6.1.2 Absolutely-Positioned Boxes), even if it has a preferred aspect ratio
~CSS2は、[ 置換される要素と縦横比を伴う要素 ]を明瞭に相違~化していなかった。 不明瞭な特定の事例を — ~level 3 仕様か ここか,適切な方で — 洗い出して,定義する必要がある。 ◎ CSS2.1 does not cleanly differentiate between replaced elements vs. elements with an aspect ratio; need to figure out specific cases that are unclear and define them, either in the appropriate Level 3 spec or here.
この例は、 格子~内の各~itemを正方形として描画するよう設定する — ~itemの個数, 各~itemの横幅を可用な空間により決定して。 ◎ This example sets each item in the grid to render as a square, determining the number of items and their widths by the available space.
<ul> <li>… <li>… <li>… <li>… </ul>
ul { display: grid; grid-template-columns: repeat(auto-fill, minmax(12em, 1fr)); } li { aspect-ratio: 1/1; overflow: auto; }
この例では、 `iframe$e 要素の `aspect-ratio$p ~propを,その[ `width^a, `height^a ]属性を利用して設定する。 `iframe^e は この縦横比を利用して~sizeされ、 正確に,縦横比を伴う画像の様に挙動するようになる。 ◎ This example uses the iframe element’s width and height attributes to set the aspect-ratio property, giving the iframe an aspect ratio to use for sizing so that it behaves exactly like an image with that aspect ratio.
<iframe src="https://www.youtube.com/embed/0Gr1XSyxZy0" width=560 height=315>
@supports (aspect-ratio: attr(width number) / 1) { iframe { aspect-ratio: attr(width number) / attr(height number); width: 100%; height: auto; } }
`置換され$る要素が その`生来な寸法$として[ `生来な横幅$, `生来な縦幅$ ]のうち片方しか有さない下で,要素に`選好d縦横比$を与えた場合、[ その片方を`選好d縦横比$を通して転換した結果 ]がもう片方を与える。 ◎ If a replaced element’s only natural dimension is a natural width or a natural height, giving it a preferred aspect ratio also gives it an natural height or width, whichever was missing, by transferring the existing size through the preferred aspect ratio.
X.2. 自動的~sizeに対する選好d縦横比による効果
~boxが`選好d縦横比$を有する場合、 ~boxの`自動的~size$は,[ `生来な縦横比$を有する, かつ その軸において`生来な~size$は無い`置換され$る要素 ]と同じに計算される — 例: `CSS2$r `§ 10@~CSS2J#visudet$, ~flex~layoutの `§ 行f長さの決定@~CSSFLEX#algo-main-item$ を見よ。 `縦横比に依存する軸@ ( `ratio-dependent axis^en )とは、 `選好d~size$の計算が`選好d縦横比$に依存する方の軸を指す — その入力~sizeが`確定的$ならば、 結果の~sizeも`確定的$になる。 他方の軸が, `縦横比に依存しない軸@ ( `ratio-determining axis^en )になる (`縦横比に依存する軸$における~sizeは、 この軸における~sizeに依存する)。 ◎ When a box has a preferred aspect ratio, its automatic sizes are calculated the same as for a replaced element with a natural aspect ratio and no natural size in that axis, see e.g. CSS2 § 10 and CSS Flexible Box Model Level 1 § 9.2. The axis in which the preferred size calculation depends on this aspect ratio is called the ratio-dependent axis, and the resulting size is definite if its input sizes are also definite. The opposite axis (on which the ratio-dependent axis size depends) is the ratio-determining axis.
注記: ~boxの`選好d縦横比$は、 その[ `width$p, `height$p ]のうち どちらかが`自動的~size$である場合に限り, ~boxの【他方の】`選好d~size$に対する効果がある — どちらもそうでない場合、 効果は無い。 ◎ Note: A preferred aspect ratio only ever has an effect if at least one of the box’s sizes is automatic. If neither width nor height is an automatic size, it can have no effect on its preferred sizes.
すべての~sizing情報をここに移動したなら — `, rather than crowbar-ing our way into 2.1^en【?】 — ここでの中核~原則は、 `縦横比に依存しない軸$に対し ([ 最小-/最大- ]拘束を適用する前に) 解決された`選好d~size$は,比率を通して転換するだけになる。 [ 最小-/最大- ]拘束は、 その後に転換され,縦横比を問わず各~軸に独立に適用される。 ◎ When we move all the sizing information here, rather than crowbar-ing our way into 2.1, then the core principle here is just: the resolved preferred size in the ratio-determining axis (before applying min/max) gets transferred thru the ratio. Min/max constraints get transferred afterwards, and then applied to each axis independently without regards to aspect-ratio.
X.2.1. ~marginの相殺-法
~marginを`相殺-$する目的においては、 `縦横比に依存する軸$が`塊-軸$である場合, `block-size$p の`算出d値$は `~autoS$v とは見なされない。 ◎ For the purpose of margin collapsing (CSS 2 § 8.3.1 Collapsing margins), if the block axis is the ratio-dependent axis, it is not considered to have a computed block-size of auto.
X.3. 内容に基づく自動的な最小~size
意図的でない~overflowを避けるためには、 `選好d縦横比$を伴う~boxのうち[ `置換され$ない, かつ`~scroll容器$でないもの ]の`縦横比に依存する軸$における`自動的な最小~size$は、 ~boxの`最小-内容~size$を~boxの`最大~size$以下に抑えた結果になる。 ◎ In order to avoid unintentional overflow, the automatic minimum size in the ratio-dependent axis of a box with a preferred aspect ratio that is neither a replaced element nor a scroll container is its min-content size capped by its maximum size.
次の例では、 ~boxの横幅【!wide】は(通例通り)容器のそれと同じになり, ~boxの縦幅は[ ~boxの内容を包含するために必要な分の高さ ]かつ横幅【!wide】~以上になる。 ◎ In the following example, the box is as wide as the container (as usual), and its height is as tall as needed to contain its content but at least as tall as it is wide.
div {
aspect-ratio: 1/1;
/*
`width^p, `height^p どちらも既定では `auto^v
◎
'width' and 'height' both default to 'auto'
*/
}
+----------+ +----------+ +----------+ | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | | | ~~~ | | ~~~~~~~~ | +----------+ +----------+ | ~~~~~~~~ | | ~~~~~~ | +----------+
しかしながら, `overflow$p に `auto^v が指定されたときは、 ~boxが超過する内容を伴う場合でも縦横比 1:1 を保守する (代わりに,通例通り~scroll可能になり、 それにより~overflowを取扱う)。 ◎ When overflow: auto is specified, however, even the box with excess content maintains the 1:1 aspect ratio (and handles overflow by becoming scrollable instead, as usual).
div { overflow: auto; aspect-ratio: 1/1; }
+----------+ +----------+ +----------+ | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~^| | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | | | ~~~ | | ~~~~~~~~v| +----------+ +----------+ +----------+
`min-height$p ~propを上書きしても縦横比 1:1 を保守するが、 他で取扱われない限り,内容は~boxを~overflowすることになる。 ◎ Overriding the min-height property also maintains the 1:1 aspect ratio, but will result in content overflowing the box if it is not otherwise handled.
div { aspect-ratio: 1/1; min-height: 0; }
+----------+ +----------+ +----------+ | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~ | | ~~~~~~~~ | | ~~~~~~~~ | | | | ~~~ | | ~~~~~~~~ | +----------+ +----------+ +-~~~~~~~~-+ ~~~~~~
この自動的な最小は、 どちらの軸にも演算する。 次の例を考える: ◎ This automatic minimum operates in both axes. Consider this example:
<div style="height: 100px; aspect-ratio: 1/1;"> <span style="display: inline-block; width: 50px;"></span> <span style="display: inline-block; width: 150px;"></span> </div>
この容器の `width$p は `~autoS$v であり,縦横比を通して 100px に解決される。 しかしながら、 その `min-width$p は `auto^v であり, 150px に解決される。 したがって,結果の容器の横幅は、 150px になる。 `min-width$p に `0^v を指定することで、 容器を~sizeするときに内容を無視されるようにできる。 ◎ The width of the container, being auto, resolves through the aspect ratio to 100px. However, its min-width, being auto, resolves to 150px. The resulting width of the container is thus 150px. To ignore the contents when sizing the container, min-width: 0 can be specified.
X.4. 最小-/最大-~sizeの転換-法
~boxに対する一方の軸 %元-軸 における~sizingの拘束は、 次に従って`選好d縦横比$を通して転換され,他方の軸 %行先~軸 における`不定$な[ `最小~size$/`最大~size$/`選好d~size$ ]に適用される: ◎ Sizing constraints in either axis (the origin axis) are transferred through the preferred aspect ratio and applied to any indefinite minimum, maximum, or preferred size in the other axis (the destination axis) as follows:
- %元-軸 における`最小~size$は`確定的$ならば,それは ⇒ `選好d縦横比$を通して %行先~軸 における~sizeに変換され、 その結果は ⇒ %行先~軸 における`選好d~size$は`確定的$ならば,それ以下に抑えられ、 さらに ⇒ %行先~軸 における`最大~size$は`確定的$ならば,それ以下に抑えられる。 ◎ First, any definite minimum size is converted and transferred from the origin to destination axis. This transferred minimum is capped by any definite preferred or maximum size in the destination axis.
- %元-軸 における`最大~size$は`確定的$ならば,それは ⇒ `選好d縦横比$を通して %行先~軸 における~sizeに変換され、 その結果は ⇒ %行先~軸 における`選好d~size$は`確定的$ならば,それ以下に抑えられ、 さらに ⇒ %行先~軸 における`最大~size$は`確定的$ならば,それ以下に抑えられる。 ◎ Then, any definite maximum size is converted and transferred from the origin to destination. This transferred maximum is floored by any definite preferred or minimum size in the destination axis as well as by the transferred minimum, if any.
注記: したがって,他方の軸( %行先~軸 )における確定的な~sizeは、 他方の軸へ転換された拘束には,まったく影響されない。 転換された最小~sizeは、 要素を その確定的な[ 選好d~size/最大~size ]を超過させることは決してない/ 転換された最大~sizeは,要素を その[ 選好d~size/最小~size ]に違反させることは決してない。 ◎ Note: Thus, any definite sizes are completely unaffected by a transferred constraint; and a transferred minimum will never cause an element to exceed a definite preferred/maximum size, nor will a transferred maximum cause an element to violate its preferred/minimum size.
注記: [ ~sizingの拘束を縦横比を通して他方の軸へ転換する ]ときの基本的な原則は、 他方の軸に明示的に指定された~sizeに違反しない限り, できるだけ自身の縦横比を保全することにある。 ( `CSS2$r `§ 縦横比を伴う~size不定な置換d要素に対する最大, 最小~sizeの適用-法@~CSS2J#min-max-replaced-size$ 【!~CSS2J#min-max-widths】は、 この原則に基づく。) ◎ Note: The basic principle is that sizing constraints transfer through the aspect-ratio to the other side to preserve the aspect ratio to the extent that they can without violating any sizes specified explicitly on that affected axis. (This is the principle that drove the contents of the constraint table in CSS2 Section 10.4.)
次の例では: ◎ In the following example:
<div id=container style="height: 100px; float: left;"> <div id=item style="height: 100%; aspect-ratio: 1/1;">content</div> </div>
~item `#item^css の縦幅は,~sizeが確定的な容器を~~基準に解決される百分率であり、 ~itemの横幅は,[ その`内在的~size供与$, 最終的な~layout ]どちらに対しても `100px^v に解決されるので、 容器の横幅も `100px^v に~sizeする。 ◎ Since the height of the #item is a percentage that resolves against a definite container, the width of the item resolves to 100px for both its intrinsic size contributions as well as for final layout, so the container also sizes to a width of 100px.
<div id=container style="height: auto; float: left;"> <div id=item style="height: 100%; aspect-ratio: 1/1;">content</div> </div>
代わって,次の例では、 百分率による~itemの縦幅は解決し得ないので,`~autoとして挙動する$ ( `CSS2$r `§ 内容~縦幅@~CSS2J#the-height-property$を見よ)。 両~軸とも今や`自動的~size$になるので、 縦幅は`縦横比に依存する軸$になる。 ~boxの`内在的~size供与$を計算すると,その内容から導出される横幅を生産し, その横幅と縦横比から計算される縦幅は、 単語 “content” の横幅に~sizeされた正方形な~box(および容器)が得られる。 ◎ In this next example, the percentage height of the item cannot be resolved and behaves as auto (see CSS 2 § 10.5 Content height: the 'height' property). Since both axes now have an automatic size, the height becomes the ratio-dependent axis. Calculating the intrinsic size contributions of the box produces a width derived from its content, and a height calculated from that width and the aspect ratio, yielding a square box (and a container) sized to the width of the word “content”.
この節は、 正しく書かれてないかもしれない [`6071$issue]。 ◎ This section might not be written correctly. [Issue #6071]
変更点
近過去の変更点
- `2020年 12 月 18日 作業草案@~TR/2020/WD-css-sizing-3-20201218/$ からの変更点: ◎ Changes since the 18 December 2020 Working Draft include:
-
【 ここに記された内容は、 明らかに~level 4 の変更点なので,和訳は省略する (誤って この~level 3 に記されたと見受けられる)。 】
◎ Fixed the order of contain-intrinsic size values when auto is combined with other values so that parsing is unambiguous. (Issue 6391) ◎ Clarified which elements are allowed to not have a last remembered size for contain-intrinsic-size: auto. (Issue 6220) ◎ Limited contain-intrinsic-size: auto to when content-visibility' is content-visibility/auto''. (Issue 6308) - `2020年 12 月 18日 作業草案@~TR/2020/WD-css-sizing-3-20201218/$ からの変更点: ◎ Recent Changes ◎ Changes since the 18 December 2020 Working Draft include:
- `§ 内在的~size@#intrinsic-sizes$ における[ 置換d要素の最大-内容~sizeの定義 ]における様々な誤りを修正した。 ( `6072$issue ) ◎ Fixed various errors in definition of max-content sizes of replaced elements in § 5.1 Intrinsic Sizes. (Issue 6072)
- `内容が収まる~size$の定義に,欠落った[ `最小-内容 拘束$を取扱うための言明 ]を追加した。 ◎ Added missing statement handling min-content constraint to definition of fit-content size.
- `内在的~size$との混同を避けるため、 置換d要素の “内在的” 寸法を “生来な” 寸法に改称した。 ( `4961$issue ) ◎ Renamed replaced element “intrinsic” dimensions to “natural” dimensions in order to avoid confusion with intrinsic sizes (see Issue 4961).
- 様々な他の小さな編集上の修正点と改善。 ◎ Various other minor editorial fixes and improvements.
- `2019年 5月 22日 作業草案@~TR/2019/WD-css-sizing-3-20190522/$ からの主な変更点は: ◎ Major changes since the 22 May 2019 Working Draft include:
- [ `min-content$v / `max-content$v ]は、 (関連な~layout~moduleにより)他が指定された場合には[ 当の~propの初期~値と同じに挙動するとは限らない ]ものと定義した。 ( `3973$issue ) ◎ Defined that min-content and max-content do not necessarily behave the same as the property’s initial value if otherwise specified (by the relevant layout module). (Issue 3973)
- `fit-content$f による内在的~供与を計算するときには、 その解決~用に特別な挙動を与えるのではなく,[ その引数を それ~~単体で与えたときと同じに扱う下で, `内容が収まる~size$用の公式を解決する ]よう切替えた。 ( `3731$issue ) ◎ Switched intrinsic contribution of fit-content() to treat its argument as that argument would be treated alone for intrinsic contribution calculations and resolve the fit-content formula accordingly, rather than having special behavior for fit-content() resolution when calculating intrinsic contributions. (Issue 3731)
- `置換され$る~boxが`内在的~size$を伴わない場合、 ~boxの`最大-内容~size$には[[ 初期~包含塊の~size / `300px^v × `150px^v ]に代えて,~boxの`最小~size$を — それが `length$t の場合に限り — 利用する ]よう変更した。 `§ 内在的~size@#intrinsic-sizes$ を見よ。 ( `4217$issue ) ◎ Changed the max-content size of replaced boxes without an intrinsic size to use their minimum size in place of ICB or 300px×150px only when it is a <length>, see § 5.1 Intrinsic Sizes. (Issue 4217)
- 生来な縦横比を伴う~objに対する既定の~sizingを[ `300px^v × `150px^v に代えて,初期~包含塊の~sizeを利用する ]よう切替えた。 ( `4218$issue ) ◎ Switched default sizing of an object with a natural aspect ratio to use the ICB size instead of 300px×150px. (Issue 4218)
- `選好d縦横比$を定義した。 適切な所では、 “内在的~縦横比” 【`生来な縦横比$の旧称】に代えて,それを利用した。 ◎ Defined preferred aspect ratio and used it in place of “intrinsic aspect ratio” where appropriate.
- 諸々の[ 小さな/編集上の ]修正s。 ◎ Miscellaneous minor / editorial fixes.
- `2018年 3月 4日 作業草案@~TR/2018/WD-css-sizing-3-20180304/$ からの主な変更点は: ◎ Major changes since the 4 March 2018 Working Draft include:
- `box-sizing$p の定義を `CSS UI ~level 3@~TR/css-ui-3/$ から取込んだ。 ◎ Imported the box-sizing definition from CSS UI Level 3.
- `循環な百分率$の取扱いを,より厳格に指定した。 ( `1132$issue, `2384$issue, `2297$issue, `2674$issue ) ◎ More rigorously specified handling of cyclic percentages. (#1132, #2384, #2297, #2674)
- 塊~軸に適用される各種 `*-content^v 値は、 ~propの初期~値に算出されることなく, ~propの初期~値として “挙動する” ように変更した。 ( `2708$issue ) ◎ Changed the *-content values applied to the bock axis to not compute to the property’s initial value, but to rather “behave as” the property’s initial value. (#2708)
- 諸々の自明な誤りを修正した。 ◎ Fixed miscellaneous trivial errors.
- `2017年 2月 7日 作業草案@~TR/2017/WD-css-sizing-3-20170207/$ からの主な変更点は: ◎ Major changes since the 7 February 2017 Working Draft include:
- 置換される要素~用の[ `最小-内容~size$ / `最大-内容~size$ ]の定義を,もっと正確aにした。 ◎ More accurate definition of min-content and max-content sizes for replaced elements.
- 新たな~keywordは、 `塊-軸$に適用されるときは初期~値に算出されることにした — 存在しないこともある `~autoS$v ではなく。 ◎ Compute new keywords to the initial value, not to a potentially non-existent auto, when applied to the block axis.
- 置換される要素~上の百分率~sizeによる`最小-内容 供与$は、 0 化するよう指定した。 ◎ Specify that percent sizes on replaced elements zero out their min-content contribution.
- [ ~sizeが内容に依存する包含塊 ]を基準に解決される百分率~sizeの[ 紛らわしい/間違った ]定義を修正した (これには、もっと作業が要求されよう)。 ◎ Fix confusing/wrong definition of percentage sizes resolved against a dependent containing block. (This may require further work.)
- ~keyword `stretch$v, `fit-content$v は、[ 包含塊が`不定$なときの挙動 ]をもっと~~深く考慮できるよう,~level 4 に先送りした。 ◎ Deferred the stretch and fit-content keywords to Level 4 to allow for further consideration of their behavior in indefinite containing blocks.
- [ 次に挙げる,すべての~sizing~prop ]用の全部的な定義を取り込んだ(~~差分ではなく) ⇒# `width$p, `height$p, `min-width$p, `min-height$p, `max-width$p, `max-height$p, `box-sizing$p ◎ Pulled in full definitions for all of the sizing properties (rather than diffing them): width, height, min-width, min-height, max-width', max-height, and box-sizing.
~CSS~level 2 からの追加
様々な[ 自動的な/内容に基づく ]~sizing~algoに対する相当な詳細に加え、 次に挙げる新たな特能が `CSS2$r 以降に追加された: ◎ In addition to substantially more detail to the various automatic and content-based sizing algorithms, the following new features have been added since [CSS2]:
- `box-sizing$p ~prop (元々は `CSS-UI-3$r にて定義されていたが、ここに移動された)。 ◎ The box-sizing property (originally defined in [CSS-UI-3], then moved here).
- 各種`~sizing~prop$用の次に挙げる値 ⇒# `min-content$v, `max-content$v, `fit-content$f ◎ The min-content, max-content, and fit-content() values of the sizing properties.
- [ `min-width$p / `min-height$p ]~prop用の初期~値 `~autoS$v (元々は `CSS-FLEXBOX-1$r にて定義されていたが、ここに移動された)。 ◎ The auto initial value of the min-width and min-height properties (originally defined in [CSS-FLEXBOX-1], then moved here).
謝辞
この~moduleの策定に寄与された,次の方々に: ◎ Special thanks go to\
L. David Baron, Aaron Gustafson, Daniel Holbert, and Mats Palmgren for their contributions to this module.
~privacyと~securityの考慮点
~CSSは、 自動的な~layoutを~supportするため,~boxを その内容が収まるように~sizeする。 これは、 そのような~boxの~sizeを~scriptに返し得る様々な[ `DOM$r / `CSSOM$r ]~APIとの併用により,~boxの内容についての情報を公開し得る。 しかしながら,この情報は、 ~boxの~sizeを通して間接的に得るよりも,当の内容を成す~DOMを検分することで 直にかつ容易に可用になる。 内容を検分し得ない容器(非同一-生成元に属する `iframe$e など)も — 画像などの`置換され$る要素は,その`生来な~size$や`生来な縦横比$を公開するが、 それを除けば — 外縁~pageには~sizing情報を公開しない。 ◎ In order to support automatic layout, CSS sizes boxes to fit their contents. In conjunction with various [DOM] and [CSSOM] APIs which can return the size of those boxes to script, this can expose information about those contents. However, this information is more directly and easily available by inspecting the DOM for the contents, rather than indirecting through the box’s size. Containers that can’t have their contents inspected (such as cross-origin iframes) also do not expose sizing information to the outer page, except insofar as replaced elements such as images expose their natural size and/or aspect ratio.