1. 序論
◎非規範的この~moduleは、 ~CSSによる `複-柱~layout@† について述べる。 この文書に述べる機能性を利用すれば、 ~stylesheetにて 要素の内容を複数の`柱$内に~lay-outされるように宣言できるようになる。 ◎ This module describes multi-column layout in CSS. By using functionality described in this document, style sheets can declare that the content of an element is to be laid out in multiple columns.
【 日本語では,一般に “段組” と呼ばれるが、 段組の “~~段(横方向へ伸びる柱)” は 縦組みが念頭に置かれている語であり, `複-柱~行l$と紛らわしいので、 この訳では もっと直に, “複-柱” と記す。 この意味を表す原文の語 “`multi-column^en” は、 原文では “`multicol^en” とも略記されるが,対訳では区別しない。 】
~CSSにおける他の~layout手法では、 親~要素に適用されたとき,その子たちの表示~prop【!`display^p ~propではない】は変化する。 例えば, 3 本の`格子~col$からなる`格子~layout$が作成された場合、 `格子~容器$の子は`格子~駒$になり, `格子~升$ごとに 1 個の要素が~col`筋$の中へ配置される — 必要に応じて追加的な`格子~row$を作成して。 ◎ Other layout methods in CSS, when applied to a parent element, change the display properties of the direct children. For example if a three column grid layout is created, the direct children of the grid container become grid items and are placed into the column tracks, one element per cell with additional rows created as needed.
しかしながら,`複-柱~容器$の子~要素は、 `通常~flow$内にあり続け, その~flowは何本かの柱の中へ配列される。 これらの`柱$の`行内~size$は~flex可能なので、 表示される柱の[ ~size/本数 ]が,可用な空間に応じて変化することにより応答する。 ◎ The child elements of a multi-column container however continue in normal flow, that flow is arranged into a number of columns. These columns have a flexible inline size, and therefore respond to available space by changing the size or number of columns displayed.
【 この~layoutは、 各~柱を~text行lになぞらえる下での “より粒度が荒い” 行内~layoutと捉えることもできる。 ~lay-outされる内容は、 ~textの自動改行と同様に,[ ~page分断(改~page)/後述の`~spanning要素$ ]により “自動改~柱 (`平準化@#filling-columns$)”され、 各~柱の~~幅は,~textの行l高さと同様に一定になる。 】
~CSSで`複-柱~layout$を述べるのは容易である。 単純な例を示す: ◎ Multi-column layouts are easy to describe in CSS. Here is a simple example:
body { column-width: 12em }
この例では、 `body^e 要素は,各~柱の~~幅が `12em^v 以上になるように設定される。 正確な柱~数は,`可用な空間$に依存することになる。 ◎ In this example, the body element is set to have columns at least 12em wide. The exact number of columns will depend on the available space.
~stylesheetの中で柱~数を明示的に設定することもできる: ◎ The number of columns can also be set explicitly in the style sheet:
body { column-count: 2 }
この事例では、 柱~数は固定され、 各~柱の幅は,可用な幅に依存して変わり得ることになる。 ◎ In this case, the number of columns is fixed and the column widths will vary depending on the available width.
略式~prop `columns$p を利用すれば、 1 個の宣言で,一方のみ† または両方の~propを設定できる: ◎ The shorthand columns property can be used to set either, or both, properties in one declaration.
次の例は、 順に,[ 柱~数のみ, 各~柱の幅のみ, 柱~数と幅の両者 ]を設定する: ◎ In these examples, the number of columns, the width of columns, and both the number and width are set, respectively:
body { columns: 2 } body { columns: 12em } body { columns: 2 12em }
【† 通常の略式~propと挙動が異なるわけではなく,実際には両方とも設定する (値を指定しなかった方の~propは、 初期~値( `auto^v )に設定される)。 】
この~moduleは、 各~柱~間の`~gap$と`罫線$について述べる,別の~prop群も導入する。 ◎ Another group of properties introduced in this module describe gaps and rules between columns.
body { column-gap: 1em; column-rule: thin solid black; }
上の例の最初の宣言は、 隣接な柱~間の~gapを `1em^v に設定する。 `柱~gap$は,~padding区画に類似する。 ~gapの真中には、 `column-rule$p ~propで述べられる`罫線$が在ることになる。 ◎ The first declaration in the example above sets the gap between two adjacent columns to be 1em. Column gaps are similar to padding areas. In the middle of the gap there will be a rule which is described by the column-rule property.
`column-rule$p ~propの値は、 各種~CSS~border~propの値に類似する。 `column-rule$p は、 `border$p と同様に,略式~propである。 ◎ The values of the column-rule property are similar to those of the CSS border properties. Like border, column-rule is a shorthand property.
上の例の `column-rule$p 略式~prop宣言を展開した結果は: ◎ In this example, the shorthand column-rule declaration from the above example has been expanded:
body { column-gap: 1em; column-rule-width: thin; column-rule-style: solid; column-rule-color: black; }
`column-fill$p, `column-span$p ~propは、[ `複-柱~layout$における,より広範な視覚的~表出 ]を~stylesheetに与える。 ◎ The column-fill and column-span properties give style sheets a wider range of visual expressions in multi-column layouts.
次の例では、 各~柱の内容が平準化されるよう — すなわち,およそ同じ長さ【高さ】になるよう — 設定され、 `h2^e 要素は,すべての柱に渡って~spanするよう設定される。 ◎ In this example, columns are set to be balanced, i.e., to have approximately the same length. Also, h2 elements are set to span across all columns.
div { column-fill: balance } h2 { column-span: all }
この仕様は、 10 個の新たな~propを導入する(どれも,これまでの例に~~現れている)。 ◎ This specification introduces ten new properties, all of which are used in the examples above.
すべての柱~propが初期~値をとる場合、 要素の~layoutは,柱が 1 本だけの`複-柱~layout$に一致する。 ◎ If all column properties have their initial value, the layout of an element will be identical to a multi-column layout with only one column.
次の描画~見本に、 ~padding(図のピンク)を伴う`複-柱~容器$における, `柱~gap$(図の黄色+緑色), `柱~罫線$(図の緑色) を示す。 これらの色は,~~説明~目的で呈示するものであり、 実際の実装では,これらの区画のうち罫線~以外には背景が~~現れることになる。 2 個目の図に,灰色の罫線を伴う複-柱~容器の描画を示す。 ◎ Column gaps (diagonal hatching) and column rules are shown in this sample rendition of a multi-column container with padding (cross hatching). The hatched areas are present for illustrational purposes only. In actual implementations these areas will be determined by the background, the second image shows a rendering of a multi-column container with column-rules.
1.1. 値~定義
【 この節の内容は ~CSS日本語訳 共通~pageに移譲。 】
2. ~module間の相互作用
この文書は、 これまでの仕様には無かった新たな特能を定義する。 この文書は、 最終的には~level 1 `CSS3-MULTICOL$r を置換して,それに取って代わることになる。 ◎ This document defines new features not present in earlier specifications. In addition, once final, it will replace and supersede the following: • The CSS Multi-Column Layout Module Level 1
3. 複-柱の~model
[ `column-width$p または `column-count$p ]~propが `~auto0$v でない値にされた要素は、 `複-柱~容器@ ( `multi-column^en 容器, 略して `multicol^en 容器)を確立し,`複-柱~layout$の容器として動作する。 ◎ An element whose column-width or column-count property is not auto establishes a multi-column container (or multicol container for short), and therefore acts as a container for multi-column layout.
従来の~CSS~box~modelにおいては、 要素の内容は,当の【!corresponding】要素の`内容~box$の中へ~flowされていた。 `複-柱~layout$は、 `匿名$な`断片化~容器$たちで形成される`断片化~文脈$ — `柱~box@ (略して “柱” ) — を導入する。 これらの各`柱~box$は、 独立な`塊~整形~文脈$を確立する — `複-柱~容器$の内容は、 その中に~flowする/ それは、 `有位置$でない子~用の`包含塊$を形成する。 ◎ In the traditional CSS box model, the content of an element is flowed into the content box of the corresponding element. Multi-column layout introduces a fragmentation context formed of anonymous fragmentation containers called column boxes (or columns for short). These column boxes establish an independent block formatting context into which the multi-column container’s content flows, and form the containing block for its non-positioned children.
次の例では、 画像の幅を 次の規則により設定する。 ◎ In this example, the width of the image is set with these rules:
img { display: block; width: 100% }
`柱~box$は新たな`塊~整形~文脈$を作成するので、 `width$p は`柱~box$に相対的に計算される。 したがって画像は、 柱~boxを~overflowしないことになる。 ◎ Given that the column box creates a new block formatting context, the width is calculated relative to the column box. Therefore the image will not overflow the column box:
`柱~box$は新たな`塊~整形~文脈$を作成するので、 `複-柱~容器$の最初の子~要素に設定された上端~marginは,複-柱~容器の~marginとは相殺されないことになる。 ◎ Given that the column box creates a new block formatting context, a top margin set on the first child element of a multicol container will not collapse with the margins of the multicol container.
`複-柱~layout$の内側に現れる浮動体は、 それが現れる`柱~box$に基づいて位置される。 ◎ Floats that appear inside multi-column layouts are positioned with regard to the column box where the float appears.
次の~CSS片は、 画像の呈示を述べる: ◎ In this example, this CSS fragment describes the presentation of the image:
img { display: block; float: right; }
~HTMLにおいては、 この画像は `現在の行l@~CSS2J#floats$ の右へ浮動する。 ◎ In the HTML, the image appears after the sentence ending, "the leg of a chicken".
`塊-軸$において`柱~box$内を~overflowする内容は、 `断片$化され,次に来る`柱~box$内に継続される。 ◎ Content overflowing a column box in the block axis fragments and continues in the next column box.
注記: `柱~box$は、 `匿名$であり,`絶対的に位置され$た~box用の`包含塊$にはならない。 そのような~box用の包含塊を確立する `position$p ~propは、 `首要~box$である`複-柱~容器$に適用される。 ◎ Note: Column boxes, which are anonymous boxes, do not become the containing block for absolutely positioned boxes. The position property, which establishes a containing block for such boxes, applies to the multicol container, it being the principal box.
次の例の`複-柱~容器$は、 `position$p が `relative^v にされているため,その子である画像の包含塊になる。 画像の `position$p は `absolute^v にされている — その位置決めは、 `柱~box$ではなく,複-柱~容器を基準にする: ◎ In this example, the multi-column container has position: relative thus becoming the containing block. The image is a direct child of the multi-column container and has position: absolute. It takes positioning from the multi-column container and not from the column box.
.container { position: relative; column-count: 3; } img { position: absolute; top: 2em; left: 3em; }
`複-柱~容器$の子孫のうち`~flow外$にあるものは、[ 柱の平準化/複-柱~容器の`塊~size$ ]には影響しない。 ◎ Out-of-flow descendants of a multi-column container do affect column balancing, and the block-size of the multi-column container.
各`柱~box$は,`複-柱~容器$の`行内~基底~方向$に順序付けられ, 1 個以上の `複-柱~行l@ の中に配列される。 [ `柱~幅@ / `柱~高さ@ ]†とは、 `柱~box$の[ `行内~size$/`塊~size$ ]である。 同じ`複-柱~行l$内に並ぶ すべての`柱~box$の 柱~幅, 柱~高さは,同じに揃う††。 ◎ The column boxes are ordered in the inline base direction of the multicol container and arranged into multicol lines. The column width is the length of the column box in the inline direction. The column height is the length of the column box in the block direction. All column boxes in a line have the same column width, and all column boxes in a line have the same column height.
【† この仕様の[ 幅( `width^en )/高さ( `height^en ) ]は、 `横組み$を念頭に記されている — 下の注記を見よ (これらを “横幅”, “縦幅” と訳さない理由は、 そのことにある)。 】【†† ほとんどの場合、 柱~幅は,各`複-柱~行l$で一定になるが、 可用な幅が`複-柱~行l$ごとに変わる場合は,そうならない — 例えば,各~断片の幅が一定でない`断片化~文脈$( `CSS Region^cite )の下では、 それが普通になろう。 】
注記: 縦組みを利用している~text~~組版においては、 一連の塊は横~方向へ連なる。 `縦組み$【の下での複-柱~layout】においては、 各~柱は,横に【すなわち,縦~方向に堆積されるように】~lay-outされる — 柱を成す一連の塊が~flowする方向は,右から左, 左から右どちらもあり得る。 したがって `column-width$p ~propは、 物理-横幅ではなく,柱の`行内~size$を指す。 ◎ Note: In text set using a vertical writing mode, the block direction runs horizontally. In a vertical writing mode columns are laid out horizontally, and the direction of the flow of blocks may be right to left, or left to right. The column-width property therefore refers to the inline size of the column, and not the physical horizontal width.
`複-柱~容器$内の同じ`複-柱~行l$内で隣接な`柱~box$は、 `柱~gap@ ( `column gap^en ) で分離され,各`柱~gap$は `柱~罫線@ ( `column rule^en )を包含し得る†。 同じ複-柱~容器~内の すべての柱~gapは,等しい。 同じ複-柱~容器~内の すべての柱~罫線もまた,現れるならば等しく現れる — ただし、 柱~罫線が現れるのは,その両側にある`柱$がどちらも内容を有するときに限られる。 ◎ Within each multicol line in the multi-column container, adjacent column boxes are separated by a column gap, which may contain a column rule. All column gaps in the same multi-column container are equal. All column rules in the same multi-column container are also equal, if they appear; column rules only appear between columns that both have content.
【† すなわち、 ~gapは,~layoutに占める空間を指示し、 罫線は,その空間に描画されるものになる。 詳細は `§ 柱の~gapと罫線@#column-gaps-and-rules$ に。 】
最も単純な場合、 1 個の`複-柱~容器$は, 1 個の`複-柱~行l$しか含まず、 当の複-柱~行lを成す各~柱の高さは,複-柱~容器の`内容~box$の使用~高さに等しくなる。 しかしながら,[ `断片化$/`~spanner$ ]は、 複-柱~容器の内容を複数個の`複-柱~行l$に分割し得る ◎ In the simplest case a multicol container will contain only one line of columns, and the height of each column will be equivalent to the used height of the multi-column container’s content box. However, fragmentation or spanners can split the content of the multi-column container into multiple multicol lines.
`複-柱~容器$が~page割りされる場合、 各~柱の高さは,~page【の~size】により拘束され、 内容は,その次の~page上の新たな`複-柱~行l$へ継続する — `柱~box$が複数~pageに分割されることは、 決してない。 ◎ If the multi-column container is paginated, the height of each column is constrained by the page and the content continues in a new line of column boxes on the next page; a column box never splits across pages.
同じ効果は、 `~spanning要素$が`複-柱~容器$を【上下の`複-柱~行l$に】分け隔てるときにも生じる: `~spanning要素$に先行する内容は、 `複-柱~行l$内の各~柱に収まるように平準化され,~boxの~~高さは~~最小限に短縮される。 `~spanning要素$に後続する内容は、 後続な新たな`複-柱~行l$内の`柱~box$の中へ~flowする。 ◎ The same effect occurs when a spanning element divides the multi-column container: the columns before the spanning element are balanced and shortened to fit their content. Content after the spanning element then flows into a new, subsequent line of column boxes.
したがって、 `複-柱~容器$は,新たな`独立な整形~文脈$を確立する定例の`塊~容器$になる — その内容は,一連の`複-柱~行l$と`~spanner$からなる。 各`複-柱~行l$は、 `塊~levelの~box$として動作して,それを成す各`柱~box$用に `複-柱~整形~文脈@ を確立する。 各`~spanner$は、 `独立な整形~文脈$を確立する`塊~levelの~box$として動作する — その`表示~型$は、 通例通り,自身の `display$p 値に依存する。 ◎ A multi-column container therefore is a regular block container that establishes a new independent formatting context whose contents consist of a series of multicol lines and multicol spanners. Each multi-column line acts as a block-level box that establishes a multi-column formatting context for its column boxes; and each spanner acts as a block-level box that establishes an independent formatting context with its type depending on its display value as usual.
入子な`複-柱~容器$も許容されるが、 実装に特有な制限sがあり得る。 ◎ Nested multi-column containers are allowed, but there may be implementation-specific limits.
注記: `柱~box$には、 ~propや値を設定することはアリでない。 例えば、 背景を ある`柱~box$に限り設定することはできない。 `柱~box$には、[ ~padding/~margin/~border ]の概念は無い。 将来の仕様は,追加的な機能性を追加し得る — 例えば、 柱ごとに幅や背景を違える機能性が~supportされるかもしれない。 ◎ Note: It is not possible to set properties/values on column boxes. For example, the background of a certain column box cannot be set and a column box has no concept of padding, margin or borders. Future specifications may add additional functionality. For example, columns of different widths and different backgrounds may be supported.
注記: `柱~高さ$が表示域の高さを超える`複-柱~容器$は、 ~accessibilityの課題を突きつけるおそれがある†。 詳細は `§ ~accessibilityの考慮点@#a11y$ を見よ。 ◎ Note: Multicol containers with column heights larger than the viewport may pose accessibility issues. See Accessibility Considerations for more details.
【† 例えば, 長大な内容が(連続的~文脈において)明示的な分断を伴わずに~lay-outされた場合、 ある柱から次の柱へ閲覧するときに, ~pageの端から端まで~scrollする必要が生じ得る。 】
4. 柱の本数と幅
複-柱~内容を~lay-outするときには、 `柱$の本数と幅を見出すことが基礎的になる。 [ `column-count$p / `column-width$p ]~propが、 柱の[ 本数/幅 ]を設定するために利用される。 ◎ Finding the number and width of columns is fundamental when laying out multi-column content. These properties are used to set the number and width of columns: • column-count • column-width
加えて、 この両者を設定する略式~propとして, `columns$p ~propがある。 ◎ A third property, columns, is a shorthand property which sets both column-width and column-count.
[ 柱~数と`柱~幅$ ]の`実際の値$には、 他の要因 — 明示的な`柱~分断$, 内容, [ 高さに対する拘束 ]など — も波及し得る。 ◎ Other factors, such as explicit column breaks, content, and height constraints, may influence the actual number and width of columns.
4.1. 柱の行内~size: `column-width^p ~prop
◎名 `column-width@p ◎値 `~auto0$v | `length [0,∞]$t ◎初 `auto^v ◎適 `塊~容器$ — ただし,`~table包装~box$は除く ◎ block containers except table wrapper boxes ◎継 されない ◎百 受容しない ◎算 ~keyword `auto^v /絶対~長さ ◎ the keyword auto or an absolute length ◎順 文法に従う ◎ア 算出d値の型による ◎表終この~propは、 `複-柱~容器$における`柱~幅$を述べる。 ◎ This property describes the width of columns in multicol containers.
- `~auto0@v
- `柱~幅$は、 他の~prop(例: `auto^v 以外の値が指定された `column-count$p )から決定されることを意味する。 ◎ means that the column width will be determined by other properties (e.g., column-count, if it has a non-auto value).
- `length [0,∞]$t
- 最適とされる`柱~幅$を述べる。 柱~幅の`実際の値$は、 (`可用な空間$を埋めるために)より幅広にされたり, (可用な空間が指定された`柱~幅$より小さい場合に限り)より狭小にされ得る。 負な値は許容されない。 使用~値は `1px^v 以上に切り上げられる。 ◎ describes the optimal column width. The actual column width may be wider (to fill the available space), or narrower (only if the available space is smaller than the specified column width). Negative values are not allowed. Used values will be clamped to a minimum of 1px.
例えば、 次の~stylesheetを考える: ◎ For example, consider this style sheet:
div { width: 100px; column-width: 45px; column-gap: 0; column-rule: none; }
`100px^v ~~幅にされた要素の内側には、 `45px^v ~~幅の柱 2 本分の部屋がある。 `可用な空間$を埋めるため、 `柱~幅$の`実際の値$は, `50px^v まで増やされることになる。 【 “部屋( `room^en )” — ~layoutにおいて排他的に占める空間 】 ◎ There is room for two 45px wide columns inside the 100px wide element. In order to fill the available space the actual column width will be increased to 50px.
次の~stylesheetの場合は: ◎ Also, consider this style sheet:
div { width: 40px; column-width: 45px; column-gap: 0; column-rule: none; }
`可用な空間$は,指定された`柱~幅$より小さいので、 柱~幅の`実際の値$は,減らされることになる。 ◎ The available space is smaller than the specified column width and the actual column width will therefore be decreased.
縦書き~textの下では、 `柱~幅$は,柱の内側の`行l~box$の長さを意味する — `column-width$p を縦書きと伴に利用できることを確保するため。 ◎ To ensure that column-width can be used with vertical text, column width means the length of the line boxes inside the columns.
注記: `column-width$p をいくぶん~flex可能にしている理由は、 多様な~screen~sizeに適宜 収まり得るような設計を達成するためである。 `柱~幅$を正確に設定するためには、 `複-柱~容器$に[ `柱~gap$, 幅(縦書き~textでは高さ) ]も指定しなければならない。 ◎ Note: The reason for making column-width somewhat flexible is to achieve scalable designs that can fit many screen sizes. To set an exact column width, the column gap and the width of the multicol container (assuming horizontal text) must also be specified.
4.2. 柱の本数: `column-count^p ~prop
◎名 `column-count@p ◎値 `~auto1$v | `integer [1,∞]$t ◎初 `auto^v ◎適 `塊~容器$ — ただし,`~table包装~box$は除く ◎ block containers except table wrapper boxes ◎継 されない ◎百 受容しない ◎算 指定されたとおり ◎順 文法に従う ◎ア 算出d値の型による ◎表終この~propは、 `複-柱~容器$の柱~数を述べる。 ◎ This property describes the number of columns of a multicol container.
- `~auto1@v
- 柱~数は、 他の~prop(例: `~auto0$v 以外の値が指定された `column-width$p )から決定されることを意味する。 ◎ means that the number of columns will be determined by other properties (e.g., column-width, if it has a non-auto value).
- `integer [1,∞]$t
- 要素の内容が~flowされることになる,最適とされる柱~数を述べる。 値は正でなければナラナイ。 `column-width$p, `column-count$p のいずれも `auto^v でない場合、 この整数~値は,最大な柱~数を述べる†。 ◎ describes the optimal number of columns into which the content of the element will be flowed. Values must be greater than 0. If both column-width and column-count have non-auto values, the integer value describes the maximum number of columns.
- 【† この “最大” は、 `column-count$p の`使用~値$の上限を意味する (`柱~幅$は、 `その結果に基づいて計算される@#pseudo-algorithm$) — `複-柱~行l$内に~lay-outされる`実際の柱~数^em(`実際の値$)ではなく。 連続的~文脈の下では、 複-柱~容器に指定された高さの上限や`柱~分断$などに因り,指定した柱~数を~overflowする内容は、 (他が指定されない限り)同じ`複-柱~行l$に柱を追加しながら継続されることになる (断片化~文脈の下では,自動的に新たな`複-柱~行l$に折り~~返されるが) — 詳細は `§ ~overflow@#pagination-and-overflow-outside-multicol$ に。 ~overflowする内容を新たな`複-柱~行l$に折り~~返すためには、 別個な複-柱~容器に振り分けるか, (高さの上限を指定せずに)後述の`~spanning要素$を利用することになる。 】
◎ Example:
body { column-count: 3 }
4.3. `column-width^p, `column-count^p 用の略式: `columns^p ~prop
◎名 `columns@p ◎値 `column-width$tp || `column-count$tp ◎初 個々の~propを見よ ◎適 個々の~propを見よ ◎継 個々の~propを見よ ◎百 個々の~propを見よ ◎算 個々の~propを見よ ◎順 文法に従う ◎ア 個々の~propを見よ ◎表終`column-width$p, `column-count$p を設定するための略式~propである。 省略された~~成分~値は、 その`初期~値$に設定される。 ◎ This is a shorthand property for setting column-width and column-count. Omitted values are set to their initial values.
`columns$p ~propを利用する妥当な宣言の例: ◎ Here are some valid declarations using the columns property:
columns: 12em; /* column-width: 12em; column-count: auto */ columns: auto 12em; /* column-width: 12em; column-count: auto */ columns: 2; /* column-width: auto; column-count: 2 */ columns: 2 auto; /* column-width: auto; column-count: 2 */ columns: auto; /* column-width: auto; column-count: auto */ columns: auto auto; /* column-width: auto; column-count: auto */
4.4. 柱~数と柱~幅の使用~値の計算法
`column-count$p, `column-width$p の`使用~値$は、 それらの`算出d値$, `column-gap$p の算出d値, `複-柱~容器$の使用~幅から、 以下に従って決定される。 ◎ The pseudo-algorithm below determines the used values for column-count (N) and column-width (W). There is one other variable in the pseudo-algorithm: U is the used width of the multi-column container.
注記: 複-柱~容器の使用~幅は、 要素の内容に依存することもある†。 その場合、 それは `column-count$p, `column-width$p ~propの`算出d値$にも依存する。 この仕様は,その計算法については定義しない。 別の~module (おそらく, `CSS3BOX$r か `CSS3-SIZING$r ) が,これを定義するものと期待されている。 ◎ Note: The used width U of the multi-column container can depend on the element’s contents, in which case it also depends on the computed values of the column-count and column-width properties. This specification does not define how U is calculated. Another module (probably the Basic Box Model [CSS3BOX] or the Box Sizing Module [CSS3-SIZING]) is expected to define this.
【† 例えば,`直交~flow$の下では、 同じ`複-柱~行l$の中へ`内容に必要なだけ,柱が追加され得る@~CSSWM#auto-multicol$。 これらは`~overflow柱$ではないので,要素の使用~幅(`行内~size$)に寄与する。 】
-
まず `column-count$p の`使用~値$ %C を計算する:
- %count ~LET `column-count$p の算出d値
- %width ~LET `column-width$p の算出d値
- %gap ~LET `column-gap$p の算出d値
- %U ~LET 複-柱~容器の使用~幅
- ~IF[ %width ~EQ `~auto0$v ]~AND[ %count ~EQ `~auto1$v ] ⇒ 複-柱~容器ではないので、 使用~値は計算されない 【この場合でも,`直交~flow$の下では、`複-柱~容器として扱われ得る@~CSSWM#auto-multicol$。】
- ~IF[ %gap ~EQ `normal$v ] ⇒ %gap ~SET `1em^v
- %C ~LET %count
-
~IF[ %width ~NEQ `~auto0$v ]:
- %C ~SET 次を超えない最~大な整数を 1 以上に切り上げた結果 ⇒ ( %U ~PLUS %gap ) ~DIV ( %width ~PLUS %gap )
- ~IF[ %count ~NEQ `~auto1$v ]~AND[ %C ~GT %count ] ⇒ %C ~SET %count
- ~RET %C
- `column-width$p の`使用~値$は、 次に与える値を 0 以上に切り上げた結果になる ⇒ ( ( %U ~PLUS %gap ) ~DIV %C ) ~MINUS %gap ◎ And: (11) W := max(0, ((U + column-gap)/N - column-gap))
自動で繰返される`柱$の本数を見出す目的においては、 ~UAは, 0 による除算を避けるため,自身が指定する正な値を柱~sizeの下限にするモノトスル。 この下限は `1px^v 以下にすることが示唆される。 ◎ For the purpose of finding the number of auto-repeated columns, the UA must floor the column size to a UA-specified value to avoid division by zero. It is suggested that this floor be 1px or less.
`~paged媒体$などの`断片~化~文脈$においては、 ~UAは,この計算を断片ごとに遂行してもヨイ。 ◎ In fragmented contexts such as in paged media, user agents may perform this calculation on a per-fragment basis.
`column-count$p の`使用~値$は,[ 明示的な`柱~分断$や, `柱~高さ$に対する拘束 ]に~~関係なく計算される一方、 `実際の値$にはそれらが織り込まれる。 ◎ The used value for column-count is calculated without regard for explicit column breaks or constrained column heights, while the actual value takes these into consideration.
【 すなわち, `column-count^p は、 実質的には`柱~幅$を確定させるためにあり, `複-柱~行l$内に~lay-outされる実際の柱~数を制限するものではない。 】
次の例では、 明示的な柱~分断に因り, `column-count^p の`実際の値$が その`使用~値$より高くなる: ◎ In this example, the actual column-count is higher than the used column-count due to explicit column breaks:
div { width: 20em; columns: 10em; column-gap: 0; } p { break-after: column; }
<div> <p>段落一 <p>段落二 <p>段落三 </div>
`column-count^p の`実際の値$は,その`使用~値$より低くなることもある。 次の例を考える: ◎ The actual column-count may be lower than the used column-count. Consider this example:
div { width: 80em; height: 10em; columns: 20em; column-gap: 0; column-fill: auto; }
<div>foo</div>
この場合、 `column-count$p の[ `算出d値$は `~auto1$v, `使用~値$は `4^v, `実際の値$は `1^v ]になる。 ◎ The computed column-count is auto, the used column-count is 4, and the actual column-count is 1.
4.5. 積層~文脈
`複-柱~容器$内のすべての`柱~box$は 同じ積層~文脈に属する。 それらの内容が描かれる順序は、 CSS 2.1 により指定される。 `柱~box$は,新たな積層~文脈を確立しない。 ◎ All column boxes in a multi-column container are in the same stacking context and the drawing order of their contents is as specified in CSS 2.1. Column boxes do not establish new stacking contexts.
4.6. 柱の~style法: `column^pe 疑似要素
`column@pe `疑似要素$は、 `複-柱~容器$を成す個々の柱を表現する。 それは、 `複-柱~容器$上に限り存在する。 【すなわち,その`出自の要素$は`複-柱~容器$を生成するものに限られる。】 ◎ The ::column pseudo-element represents the individual columns in a multi-column container. It only exists on multi-column containers.
`複-柱~容器$は、 それを成す柱ごとに `column$pe 疑似要素を有する。 `column$pe 疑似要素に適用される~styleは、 当の複-柱~容器を成す【!on that element】すべての柱に一律に適用される — 柱ごとに個別に取組むような~styleは適用し得ない。 各 `column$pe の[ ~size, 位置 ]は、 それに対応する柱と同じ — [ `行内-軸$においては当の柱に`可用な空間$/ `塊-軸$においては当の容器の`内容~box$ ]と同じ~size【, 位置】 — になる (それは、[ `柱~gap$, `柱~罫線$ ]を受持たない)。 ◎ A multi-column container has as many ::column pseudo-elements as it has columns. They cannot be individually addressed; any styles applied to a multicol’s ::column pseudo-elements apply to all of them on that element. Each ::column has the same size and position as its corresponding column: the same size as the column’s available space in the inline axis and the container’s content box in the block axis. (It does not cover the gaps/rules between columns.)
各 `column$pe 疑似要素は、 当の`複-柱~容器$の[ 内容を伴わない子 ]として扱われる — それらは、 対応する柱を成す内容と同じ空間を埋めるだけであり,当の内容を包装するもの`ではない^em。 ◎ ::column pseudo-elements are treated as children of their multi-column container, without any contents. They do not wrap the contents of the column, just fill the same space.
`column$pe 疑似要素が受容する~propたちが成す集合は、 次に挙げるもの (各種~scroll留め~propのうち,`~scroll容器$の`内側^emにある要素に適用されるもの) に限るよう制限される ⇒# `scroll-margin$p, `scroll-snap-align$p, `scroll-snap-stop$p ◎ The ::column pseudo-element accepts only a very limited set of properties: • scroll-margin, scroll-snap-align, and scroll-snap-stop (the scroll snap properties that apply to elements inside a scroll container)
加えて、 各 `column$pe 疑似要素は, `scroll-marker$pe 疑似要素を`下位-疑似要素$【!its own】( `::column::scroll-marker^css )として有せる (他の`下位-疑似要素$【!疑似要素】は、 `column$pe には存在しない)。 そのような `scroll-marker^pe 疑似要素は、 当の `column$pe 疑似要素ではなく,その`出自の要素$【当の`複-柱~容器$】から継承する。 ◎ Additionally, a ::column pseudo-element can have a ::scroll-marker pseudo-element of its own, as ::column::scroll-marker. (Other pseudo-elements do not exist on ::column.) Such ::scroll-marker pseudo-elements inherit from the ::column pseudo-element’s originating element, rather than the ::column itself.
注記: これらの~list — `column$pe に対し働く[ ~prop/下位-疑似要素【!疑似要素】 ]たちが成す~list — は、将来に拡げられる見込みが高い — [ 柱の`内容^emについて~careすることなく, 柱の`位置^emについて有用に~careし得る ]ような特能が他にも開発されるに伴い。 ◎ Note: This list of properties and pseudo-elements that work on ::column will likely be expanded in the future, as we develop more features that could usefully care about the position of a column without caring about the contents.
5. 柱~間の~gapと罫線
`柱~gap$と`柱~罫線$は、 同じ`複-柱~容器$内の各`柱$の合間に置かれる。 これらの高さ【!長さ】は、 `柱~高さ$に等しくされる。 柱~gapは空間を【排他的に】占める。 すなわち、 柱~gapは,(同じ`複-柱~容器$の中で)内容を両側にある`柱$に分け隔てることになる【描かれるものではない】。 ◎ Column gaps and rules are placed between columns in the same multicol container. The length of the column gaps and column rules is equal to the column height. Column gaps take up space. That is, column gaps will push apart content in adjacent columns (within the same multicol container).
`複-柱~容器$ %容器 の`罫線$は: ◎ ↓
- %容器 の 上下の内容~辺を端点として,`柱~gap$の真中に描かれる。 ◎ A column rule is drawn in the middle of the column gap with the endpoints at opposing content edges of the multicol container.\
- 空間を占めない。 すなわち、[ `柱~罫線$の有無や太さにより,他のものの配置が改められる ]ことはない。 ◎ Column rules do not take up space. That is, the presence or thickness of a column rule will not alter the placement of anything else.\
- `柱~gap$より幅広にされた場合、 隣接な`柱~box$は`罫線$と重合することになり,場合によっては %容器 の~boxの外側まで拡がる。 ◎ If a column rule is wider than its gap, the adjacent column boxes will overlap the rule, and the rule may possibly extend outside the box of the multicol container.\
- %容器 の~borderの直上層に塗られる。 %容器 が~scroll可能な場合、 %容器 の~borderと背景は明白に~scrollされないが, `罫線$は`柱$とともに~scrollする必要があることに注意。 ◎ Column rules are painted just above the border of the multicol container. For scrollable multicol containers, note that while the border and background of the multicol container obviously aren’t scrolled, the rules need to scroll along with the columns.\
- その両側にある`柱$がどちらも内容を有する場合に限り,描かれる。 ◎ Column rules are only drawn between two columns that both have content.
5.1. 柱~間の側溝: `column-gap^p ~prop
`column-gap$p ~propは、 `CSS3-ALIGN$r にて定義される。 ◎ The column-gap property is defined in [CSS3-ALIGN].
`複-柱~整形~文脈$においては、 `column-gap$p ~prop用の `normal$v の使用~値は `1em^v になる。 これは、 初期~値が利用されても,各~柱は可読になることを確保する。 `柱$の合間にある`罫線$は、 在るならば`~gap$の途中に現れることになる。 ◎ In a multi-column formatting context the used value of normal for the column-gap property is 1em. This ensures columns are readable when the initial values are used. If there is a column rule between columns, it will appear in the middle of the gap.
5.2. 柱~罫線の色: `column-rule-color^p ~prop
◎名 `column-rule-color@p ◎値 `color$t ◎初 `currentcolor$v ◎適 `複-柱~容器$ ◎継 されない ◎百 受容しない ◎算 `算出d色$ ◎順 文法に従う ◎ア 算出d値の型による ◎表終- `color$t
- `柱~罫線$の色を指定する。 ◎ Specifies the color of the column rule.
5.3.柱~罫線の~style: `column-rule-style^p ~prop
◎名 `column-rule-style@p ◎値 `line-style$t ◎初 `none^v ◎適 `複-柱~容器$ ◎継 されない ◎百 受容しない ◎算 指定された~keyword ◎順 文法に従う ◎ア 離散的 ◎表終`column-rule-style$p ~propは、 `柱$間に描かれる`罫線$の~styleを設定する。 `line-style$t 値は `~borderの縮約~model@~CSS2TABLE#collapsing-borders$ に従って解釈される†。 ◎ The column-rule-style property sets the style of the rule between columns of an element. The <line-style> values are interpreted as in the collapsing border model.
【† 意図不明 — 現時点では、 各~柱ごとに罫線の~styleを変えられるわけでもないので,競合も生じない筈(将来を見据えての記述?) 】
値[ `none^v / `hidden^v ]は、 `column-rule-width$p の`算出d値$を `0^v に強制する。 ◎ The none and hidden values force the computed value of column-rule-width to be 0.
5.4. 柱~罫線の幅: `column-rule-width^p ~prop
◎名 `column-rule-width@p ◎値 `line-width$t ◎初 `medium^v ◎適 `複-柱~容器$ ◎継 されない ◎百 受容しない ◎算 絶対~長さを`機器~画素の整数倍に留めた@~CSSVAL#snap-a-length-as-a-border-width$結果 — ただし、 `柱~罫線$の~styleが[ `none^v / `hidden^v ]のときは `0^v ◎ absolute length, snapped as a border width; 0 if the column rule style is none or hidden ◎順 文法に従う ◎ア 算出d値の型による ◎表終この~propは、 `柱$間の`罫線$の幅を設定する。 負な値は許容されない。 ◎ This property sets the width of the rule between columns. Negative values are not allowed.
5.5. 柱~罫線~用の略式: `column-rule^p ~prop
◎名 `column-rule@p ◎値 `column-rule-width$tp || `column-rule-style$tp || `column-rule-color$tp ◎初 個々の~propを見よ ◎適 個々の~propを見よ ◎継 個々の~propを見よ ◎百 個々の~propを見よ ◎算 個々の~propを見よ ◎順 文法に従う ◎ア 個々の~propを見よ ◎表終この~propは `column-rule-width$p, `column-rule-style$p, `column-rule-color$p を一括して設定するための略式~propである。 省略された値は,それぞれの`初期~値$に設定される。 ◎ This property is a shorthand for setting column-rule-width, column-rule-style, and column-rule-color at the same place in the style sheet. Omitted values are set to their initial values.
次の例では、 `柱~罫線$と`柱~gap$の幅を同じにする。 したがって,それらは正確に同じ空間を占有することになる。 ◎ In this example, the column rule and the column gap have the same width. Therefore, they will occupy exactly the same space.
body { column-gap: 1.3rem; column-rule-width: 1.3rem; column-rule-style: solid; column-rule-color: green; }
6. 柱の分断
~UAは、 `複-柱~容器$の内容を複数の`柱$に~lay-outする際に,柱をどこで分断するかを決定するモノトスル。 内容を各~柱へ分断する問題は、 `CSS21$r の § 13.3.3 に述べられている,各~pageへ分断する問題に類似する。 ◎ When content is laid out in multiple columns, the user agent must determine where column breaks are placed. The problem of breaking content into columns is similar to breaking content into pages, which is described in CSS 2.1, section 13.3.3 [CSS21].
柱~分断を許容するため,`~page分断$の~propと同様に述べられる 3 個の~prop[ `break-before$p, `break-after$p, `break-inside$p ]が新たに導入される。 ◎ Three new properties are introduced to allow column breaks to be described in the same properties as page breaks: break-before, break-after, and break-inside.
6.1. 断片化の制御-法: `break-before^p, `break-after^p, `break-inside^p ~prop
`break-before$p, `break-after$p, `break-inside$p は、 `CSS3-BREAK$r にて定義される。 ◎ break-before, break-after, and break-inside are defined in [CSS3-BREAK].
7. ~spanning柱
`column-span$p ~propは、 要素が何~柱かに渡って~spanすること【 “段抜き” / “通し組み” 】もアリにする。 この仕様は、 以前の~levelでは可用でなかった値として `integer$t 【および `auto^v 】を追加する。 ◎ The column-span property makes it possible for an element to span across several columns. This specification adds <integer> to the values available in the previous level.
7.1. 何~柱かに~spanする要素: `column-span^p ~prop
◎名 `column-span@p ◎値 `none$v | `integer [1,∞]$t | `all$v | `~auto2$v ◎初 `none^v ◎適 `~flow内$にある`塊~level$の要素【!in-flow block-level elements】 ◎百 受容しない ◎継 されない ◎算 指定d値 ◎順 文法に従う ◎ア 離散的 ◎表終この~propは、 要素が何本の柱に渡って~spanするかを述べる。 各種 値の意味は: ◎ This property describes how many columns an element spans across. Values are:
- `none@v
- 当の要素は、 複数の`柱$に~spanしない。 ◎ The element does not span multiple columns.
- `all@v
- 当の要素は、 `柱~分断$を強制する — 要素は【`複-柱~整形~文脈$の】`~flow外$になり,[ 要素が関与する【!the same】`塊~整形~文脈$内の`複-柱~容器$ ]のうち[ 要素の先祖であるもの ]【は在るならば,それら】のうち[ 要素に最も近いもの ]内の すべての`柱$に渡るように~spanする。 要素より前に現れる, かつ`通常~flow$内にある内容は、 要素の直前にある`複-柱~行l$を成す すべての柱に渡って,自動的に平準化される。 後続な内容は、 要素の直後にある新たな`複-柱~行l$の中へ~flowする。 ◎ The element forces a column break\ and is taken out of flow to span across all columns of the nearest multicol ancestor in the same block formatting context.\ Content in the normal flow that appears before the element is automatically balanced across all columns in the immediately preceding multi-column line before the element appears,\ and any subsequent content flows into a new multi-column line after the element.\
-
当の要素は、 `独立な整形~文脈$を確立する。 ◎ The element establishes an independent formatting context.
注記: 要素が`整形~文脈$を確立するかどうかは、 要素の先祖に`複-柱~容器$があるかどうかに依存しない — `column-span$p が `all$v のときは、 常に確立する。 これにより、[ 複-柱~容器を除去するような後の改訂/ 媒体~queryにより,状況によっては複-柱でなくなる場合 ]にも,~layoutを堅牢に~~保ち易くなる。 ◎ Note: Whether the element establishes a new formatting context does not depend on whether the element is a descendant of a multicol or not. When column-span is all, it always does. This helps with robustness of designs to later revisions that remove the multicol, or when media queries turn the multicol off in some situations.
- `integer [1,∞]$t
- 当の要素は、 指定された本数の柱に~spanする。 値は正でなければナラナイ。 指定された整数~値が複-柱~容器【!複-柱~要素】を成す柱の本数~以上の場合、 ~spanする柱の本数は `all$v が指定されたときと同じになる。 ◎ The element spans the specified number of columns. Values must be greater than 0. If the specified integer value is equal to, or larger than the number of columns in the multicol element, the number of columns spanned will be the same as if column-span: all had been specified.
-
この定義には不足がある。 ◎ This definition is insufficient.
- 値 `1^v が指定された場合、 `none^v として~~扱うのか,~spannerを作成するのか (どれが`塊~整形~文脈$になるのか)? ◎ Does column-span: 1 count as column-span: none, or does it create a spanner (which is a BFC)?
- それは、 どの【どこからどこまでの】柱に~spanするのか? ◎ Which columns does it span?
- それは、 高さの計算にどう影響するのか? それは、 `column-fill$p とどう相互作用するのか? ◎ How does that affect height calculations, and interact with column-fill
- `~auto2@v
-
要素が~spanする柱の本数 %本数 は、 `複-柱~容器$の行内~方向における `最小-内容$`外縁~size$ %最小~size に依存する: ◎ The number of columns spanned by the element depends on its min-content outer size in the inline direction of the multi-column container.\
- [ %最小~size ~LT `column-width$p の使用~値 ]の場合、 %本数 は, `none$v が指定されたときと同じになる。 ◎ If it is smaller than the used value of column-width, this is the same as if column-span: none had been specified.\
-
他の場合、 %本数 は: ◎ Otherwise,\
- [ 次を満たす最~小な正な整数 ~LTE 柱の本数 ]ならば それになる ⇒ ( %本数 ~MUL ( `column-width$p ) ~PLUS ( %本数 ~MINUS 1) ~MUL ( `column-gap$p ) ) ~GT %最小~size ◎ the number of columns spanned is the smallest positive integer n for which n × column-width + (n - 1) × column-gap is larger than the min-content outer size.\
- 他の場合、 `all$v が指定されたときと同じになる。 ◎ If this would be larger than the number of columns, the number of columns spanned will be the same as if column-span: all had been specified.
値 `1^v が `none^v と同じことを行わない場合、 これは,要素が十分~小さいときに[ `1^v / `none^v ]どちらとして挙動するべきか? ◎ If column-span: 1 does not do the same as column-span: none, should this behave as column-span: 1 or as column-span: none when the element is small enough?
複数個の`柱$に~spanする要素は、 `複-柱~spanning要素@ (略して,~spanning要素)と呼ばれ、 それが作成する~boxは, `複-柱~spanner@ (略して,~spanner)と呼ばれる。 ◎ An element that spans more than one column is called a multi-column spanning element and the box it creates is called a multi-column spanner.
`~spanner$ %~spanner の`包含塊$は、 当の`複-柱~容器$ %容器 【 `all$v を見よ】になる。 その帰結として、 %~spanner が[ その内側にある`絶対的に位置され$た~box用の`包含塊$ ]【`絶対~位置決め包含塊$】を確立しない事例では, ~boxの`包含塊~連鎖$は — [ %~spanner, %容器 ]の合間にある[ ~boxの先祖 ]を飛ばして — 直に %容器 へ行く。 ◎ The containing block of the spanner is the multicol container itself. Consequently, in cases where the spanner itself does not establish a containing block for absolutely positioned boxes inside the spanner, their containing block chain skips directly to the multicol container (skipping any ancestors between the spanner and the multicol container).
`~spanner$は`~flow外$になるが、 これは,当の~spanning要素の`塗ng順序@~CSSPOS4#painting-order$【!`塗ng順序@~CSS22/zindex.html#elaborate-stacking-contexts$ `CSS21$r】には影響しない。 ◎ Although the spanner is taken out-of-flow, this does not affect the painting order [CSS21] of the spanning element.
次の例では、 見本~文書の 4 個目の~~文( "…ゑひもせす。" )の後に, `h2^e 要素が追加されたとする。 次の~style【!styling】が適用されたとすると: ◎ In this example, an h2 element has been added to the sample document after the sixth sentence (i.e., after the words "the leg of a"). This styling applies:
h2 { column-span: all; background: silver }
`column-span$p は `all$v に設定されるので、 `h2^e 要素より前に現れるすべての内容は, `h2^e 要素より上に示されるようになる: ◎ By setting column-span to all, all content that appears before the h2 element is shown above the h2 element.
`~spanner$は`複-柱~行l$を分割するので、 `柱~罫線$も中断することに注意 (それらが描かれるのは、 同じ`複-柱~行l$内の`柱$どうしの合間に限られる)。 ◎ Note that because the spanner splits the multi-column line, it also interrupts any column rules (which are only drawn between columns in a multi-column line).
`~spanning要素$は、 同じ`整形~文脈$の一部を成す, かつ[ 当の~spanning要素と`複-柱~容器$の合間に,`固定的に位置され$た【`絶対的に位置され$た?】子孫~用の`包含塊$を確立するもの ]は無い限り,直な子でなくともよい。 ◎ A spanning element may be lower than the first level of descendants as long as they are part of the same formatting context, and there is nothing between the spanning element and multicol container that establishes a containing block for fixed position descendants.
この例では、
`column-span$p: `all^v
を伴う要素は、
`transform$p: `rotate(90deg)^v
を伴う要素の内側にある。
当の変形は、
固定的に位置された【絶対的に位置された?】子孫~用の包含塊を確立するので,`~spanner$は作成されない。
◎
In this example, the element with column-span: all is inside an element with transform: rotate(90deg). The transform establishes a containing block for fixed position descendents, therefore a spanner will not be created.
<article> <section> <div class="spanner">Attempted spanner</div> </section> </article>
article { columns: 2; } section { transform: rotate(90deg); } .spanner { column-span: all; background: silver; }
~spannerより前にある断片が空な場合でも,特別なことは何も起こらず、 【包含している要素の】上端[ ~margin/~border/~padding ]は,空な`断片$として~spanning要素の上に現れる。 ◎ If the fragment before the spanner is empty, nothing special happens; the top margin/border/padding is above the spanning element, as an empty fragment.
次の例では、 `article^e 要素が`複-柱~容器$になるとする。 この親の内側には、 順に `p^e, `section^e 要素がある。 この `section^e が包含している `h2^e は、 `column-span^p は `all$v に設定されており,すべての`柱$に~spanするが、 `section^e は`柱~box$たちの内側にあり続ける。 ◎ In this example the multicol container is the article element. Inside this parent is a paragraph and then a section element. The section contains an h2 heading set to all this spans all three columns while the containing section remains inside the column boxes.
`h2^e は `section^e の最初の子を成す。 その結果、 この `section^e 上の[ ~margin, ~border(図の赤線), ~padding ]は空な断片として~spanning要素 `h2^e より前に現れる。 ◎ The h2 is the first child of the section. This means that the margin, border (shown in red in the diagram) and padding on this section appear before the spanning h2 as an empty fragment.
<article> <p>...</p> <section> <h2>An h2 element</h2> <p>...</p> </section> </article>
section { border: 0.5em solid red; margin-top: 2em; padding-top: 1em; } h2 { column-span: all; background: silver; }
要素を`~spanning要素$にすると,それが占める空間も増える。 空間が制限された下では、 `~spanning要素$が占める部屋を見出せないこともある。 その場合、 ~UAは,要素~上のこの~propに `none$v が指定されているかのように扱ってもヨイ。 ◎ A spanning element takes up more space than the element would take up otherwise. When space is limited, it may be impossible to find room for the spanning element. In these cases, user agents may treat the element as if none had been specified on this property.
次の例では、 `複-柱~容器$の高さが拘束されているため、 内容の後方に現れる `h2^e 要素が,~spanするための部屋が足りずに~overflowするとする。 その結果、 `h2^e 要素は `column-span^p に `none$v が指定されていたかのように現れる。 ◎ In this example, the h2 element appears later in the content, and the height of the multicol container is constrained. Therefore, the h2 element appears in the overflow and there is not room to make the element spanning. As a result, the element appears as if column-span: none was specified.
次の例は、 `h2^e 要素が最後の柱に自然に現れることを除いて,先の例に類似する。 依然として、 要素を~spanさせるに足る部屋がないので。 ◎ This example is similar to the previous example, except that the H2 element appears naturally in the last column. Still, there is not enough room to make the element spanning.
`断片~化~文脈$においては、 `~spanning要素$は,すべての断片において尊守される。 次の例では、 `~paged媒体$において,最初の 3 段落については それぞれの後に`柱~分断$が設定されていて, 4 個目の段落の後に `~spanning要素$として `h2^e 要素が現れるとする: ◎ In fragmented contexts spanning elements are honored in all fragments. In this example, we are in paged media, and the first three paragraphs have column breaks after them. A spanning H2 element appears after the fourth paragraph.
`~spanner$は,`塊~levelの~box$なので、 隣接な 2 本の`~spanner$の~marginどうしは,相殺されることになる。 `絶対的に位置され$た~itemのみで分離された 2 本の`~spanner$の~marginどうしも,相殺されることになる — 絶対的に位置された~itemは、 `柱~box$を作成しないので。 `柱~box$は,新たな`塊~整形~文脈$を確立するので、 柱~boxの内側にある要素の~marginと~spannerの~marginとは相殺されない。 ◎ Spanners are block-level boxes therefore the margins of two adjacent spanners will collapse with each other. The margins of two spanners separated only by an absolutely positioned item will collapse with each other, as absolutely positioned items do not create column boxes. As column boxes establish a new block formatting context, margins on elements inside a column box will not collapse with the margin of a spanner.
`~spanner$は,新たな`整形~文脈$を確立するが、 ~marginは,周囲のものに応じて変更され得る。 次の例では、 2 本の~spannerが自然に~page上端に来ているとする。 1 本目の~spannerの上端~marginは、 `非強制d分断$に連接するため,切落される。 2 本の~spannerの合間の~marginは互いに相殺する。 しかしながら、 2 本目の~spannerの下端~marginは,後続な要素の上端~marginとは相殺しない: ◎ Spanners establish new formatting contexts, but their margins can be changed by their surroundings. In this example, two spanners naturally end up at the top of a page. The top margin of the first spanner is truncated due to adjoining an unforced break. The margins between the two spanners collapse with each other. However, the bottom margin of the second spanner does not collapse with the top margin of the subsequent element.
h2 { margin: 0.5em 0; column-span: all; background: silver } p { margin-top: 1em }
8. 柱の埋方
各`柱$を内容で埋めていく方法には、 二つの策 — 各~柱~間で内容を平準化するか, しないか — がある。 柱たちが平準化される下では、 ~UAは,[ `強制d分断$, `widows$p, `orphans$p, `柱~高さ$【!長さ】に影響し得る他の~prop ]を尊守しつつ,柱~高さのばらつきを極力抑えるべきである。 柱たちが平準化されない下では、 それらは連列的に埋められ,一部の柱は部分的に埋められたり, 内容が無くなり得る。 ◎ There are two strategies for filling columns: columns can either be balanced, or not. If columns are balanced, user agents should try to minimize variations in column height, while honoring forced breaks, widows and orphans, and other properties that may affect column heights. If columns are not balanced, they are filled sequentially; some columns may end up partially filled, or with no content at all.
8.1. 柱の平準化: `column-fill^p ~prop
◎名 `column-fill@p ◎値 `auto$v | `balance$v | `balance-all$v ◎初 `balance$v ◎適 `複-柱~容器$ ◎継 されない ◎百 受容しない ◎算 指定された~keyword ◎順 文法に従う ◎ア 離散的 ◎表終この~propは、 直後に`~spanner$が無い`複-柱~行l$に対し, その内容が各~柱~間で平準化されるかどうかを指定する。 【`~spanner$が在る場合は常に平準化される。】 ◎ This property specifies whether content in a multi-column line that does not immediately precede a spanner is balanced across columns or not.\
各種 値の意味は: ◎ The values are:
- `balance@v
- 内容を,各`柱$間でアリな限り平準化する。 `断片~化~文脈$においては、 最後の断片だけ平準化する。 ◎ Balance content equally between columns, as far as possible. In fragmented contexts, only the last fragment is balanced.
- `balance-all@v
- 内容を,各`柱$間でアリな限り平準化する。 `断片~化~文脈$においては、 すべての断片に渡って平準化する。 ◎ Balance content equally between columns, as far as possible. In fragmented contexts, all fragments are balanced.
- `auto@v
- 各`柱$を連列的に埋めていく。 ◎ fill columns sequentially
連続的~文脈においては、 この~propは,`~overflow柱$が在るときには効果はない。 ◎ In continuous contexts, this property does not have any effect when there are overflow columns.
次の例では、 `article^e には 3 行lに収まる短い段落が 1 個だけあるとする。 以下、 この節の各~例には,次の~styleが設定されているとする: ◎ In this example, an article only has one short paragraph which fits on three lines.\
article { width: 40em; height: auto; columns: 4; column-fill: balance; /* 初期~値 */ }
上述の 3 行lは,柱~平準化に因り 3 本の柱に分けて表示される: ◎ The three lines are displayed in three different columns due to column balancing.
【 図のピンクの線(~padding)で示されたとおり、 このような場合でも,複-柱~容器は指定された柱~数を占めることになる。 】
`article^e に高さを与えた上で,柱を平準化しないよう `column-fill^p も~~上書きした場合: ◎ In this example, column balancing is turned off, and the article has a height:
article { height: 4lh; /* 4 行l分 */ column-fill: auto; }
その結果、 すべての内容は,最初の柱~内に埋められる: ◎ As a result, the first column is filled with all content:
次の例では、 `article^e には段落が 2 個あり,後のものは少し短くされている。 次の~styleを追加したとする: ◎ In this example, an article has two paragraphs: first a long one, then a shorter one. This code is applied:
p { break-after: column }
柱は最短でも 5 行l分の~textは包含できるとする。 各~柱は、 `柱~高さ$が確立されてから,連列的に埋められる† — その結果、 内容が占める~~高さは, 3 柱~目までは同じに揃うが,最後の柱では ずっと短くなる。 ◎ The shortest column height possible contains five lines of text. After the column height has been established, columns are filled sequentially. As a result, the third column is as high as the first two columns, while the last column ends up being significantly shorter.
【† すなわち、 平準化の設定が関わるのは,柱~高さの計算までであり、 以降の~layoutには関わらないと~~考えられる。 故に,~layoutに 4 行l要する~textが 3 柱に平準化される場合、 最初の 2 柱に 2 行lずつ描かれ,最後の柱は空になるであろう。 】
次の例では、 `article^e は分断-不能な絵図から開始されているとする。 それが`柱~高さ$を設定し、 後続な内容は,残りの柱の中へ連列的に埋められる: ◎ In this example, an article starts with an unbreakable figure which sets the column height. Subsequent content is filled sequentially into the remaining columns:
9. ~overflow
9.1. 複-柱~容器の内側における~overflow
`柱~box$の外側へ拡がる内容は、 柱を分断させる事例を除き, 視覚的に~overflowし, `柱~box$で切取られない。 ◎ Except for cases where this would cause a column break, content that extends outside column boxes visibly overflows and is not clipped to the column box.
注記: 柱~分断については、 § `柱~分断$を見よ。 `複-柱~容器$の`内容~box$で切取られるかどうかについては、 `§ ~page割りと複-柱~容器の外側への~overflow@#pagination-and-overflow-outside-multicol$ を見よ。 ◎ Note: See § 6 Column Breaks for column breaks and § 9.2 Pagination and Overflow Outside Multicol Containers for whether it is clipped to the multi-column container’s content box.
次の例では、 画像が柱より幅広い: ◎ In this example, the image is wider than the column:
9.2. ~page割りと複-柱~容器の外側への~overflow
内容や`柱~罫線$は、 `複-柱~容器$の辺を超えて`柱~box$の外側へ拡がるときには, `overflow$p ~propに則って切取られる。 ◎ Content and column rules that extend outside column boxes at the edges of the multi-column container are clipped according to the overflow property.
`複-柱~容器$は、 次に挙げるものに因り,与えられた部屋より多い柱を有し得る: ◎ A multicol container can have more columns than it has room for due to:
- `柱~高さ$を拘束する宣言があるとき(例: `height$p や `max-height$p )。 この場合、 行内~方向に`柱~box$が追加される。 ◎ a declaration that constrains the column height (e.g., using height or max-height). In this case, additional column boxes are created in the inline direction
- ~pageの~size。 この場合、 追加的な`柱~box$は,後続な~pageへ移動される。 ◎ the size of the page. In this case, additional column boxes are moved to the next page(s).
- 明示的な`柱~分断$。 この場合、 追加的な`柱~box$は ⇒# 連続的~文脈に対しては,行内~方向に追加される / `断片~化~文脈$に対しては,次の断片~以降に移動される ◎ explicit column breaks. In this case, additional column boxes are created in the inline direction for continuous contexts and additional column boxes are moved to the next fragment(s) for fragmented media.
連続的~文脈において`複-柱~容器$の外側に現れる`柱$は、 `~overflow柱@ と呼ばれる。 ~overflow柱は、 複-柱~容器の高さに影響し得る。 ◎ Columns that appear outside the multicol container in continuous contexts are called overflow columns. Overflow columns can affect the height of the multicol container.
次の~stylesheetでは、 `複-柱~容器$が占め得る最大な高さが拘束され, ~overflowする内容は可視になるよう指定されている: ◎ In this example, the height of the multi-column container has been constrained to a maximum height. Also, the style sheet specifies that overflowing content should be visible:
div { max-height: 5em; overflow: visible; }
その結果、 連続的~文脈においては,柱~数 【すなわち `column-count$p の`実際の値$】 が増やされる: ◎ As a result, the number of columns is increased.
連続的~文脈においては、 ~overflow柱は,`複-柱~容器$の高さに影響し得る。 この例では 4 行lの~textからなる柱が~overflow内に現れる。 `複-柱~容器$は、 この柱を収容するに足るまで高くされる。 ◎ In continuous contexts overflow columns can affect the height of the multicol container. In this example a column appears in the overflow which has four lines of text. The multicol container is made tall enough to accommodate this column.
`断片~化~文脈$においては、 ~overflowした内容は,後続な断片たち内の柱へ移される。 2 つ前の例と同じ内容が与えられた下で、 ~page~boxに,~textが整形される際に 5 行l分の部屋しか残されていない場合、 まず, 1 ~page目には次が現れる: ◎ In fragmented contexts, the overflow content goes into columns in subsequent fragments. Given the same content as in example 31 and a page box that only has room for five lines of formatted text, this would appear on the first page:
2 ~page目には次が現れることになる(柱は平準化されているとする): ◎ Assuming column balancing, this would appear on the second page:
次の例では、 各~段落の後に,明示的な柱~分断が生成される: ◎ In this example, explicit column breaks are generated after paragraphs:
p { break-after: column; }
その結果、 連続的~文脈の下では,柱~数が増やされ,行内~方向に余分な柱が追加される: ◎ As a result, the number of columns increases and the extra columns are added in the inline direction:
~paged媒体【断片~化~文脈】においては、 余分な柱は,次の~page上に示される。 上の例と同じ~codeの下では、 最後の段落は 2 ~page目に現れる。 まず, 1 ~page目には次が現れる: ◎ In paged media, extra columns are shown on the next page. Given the same code as the previous example, the last paragraph appears on the second page. This would appear on the first page:
2 ~page目には、 次が現れることになる: ◎ This would appear on the second page:
柱~平準化に因り、 最後の段落は 3 本の柱に分割される。 ◎ Due to column balancing, the last paragraph is split across three columns.
変更点
◎非規範的- ~level 1 `CSS3-MULTICOL$r `2024年 5月 16日 勧告候補@~TR/2024/CR-css-multicol-1-20240516/$ からの変更点 ◎ Changes from the Candidate Recommendation (CR) of CSS-MULTICOL-1 of 16 May 2024
- `column$pe 疑似要素を追加した。 (`2024年 9 月 27日に解決した@~CSSissue/10715#issuecomment-2379924982$) ◎ Adds the the ::column pseudo-element. Resolved 27 Sep 2024.
- `column-span$p 用に提案された値 `integer^t, `auto^v の草案を追加した。 ◎ Adds a draft of proposed <integer> and auto values for column-span.
~privacyの考慮点
この仕様が導入する新たな~privacy漏洩は、 無い。 ◎ Multicol introduces no new privacy leaks.
~securityの考慮点
この仕様が導入する新たな~securityの考慮点は、 無い。 ◎ Multicol introduces no new security considerations.
~accessibilityの考慮点
容器の高さや行lの長さを設定することは、[ 視覚的/認知的 ]障害を伴う人々に難題を突きつけ得る。 ~WCAGによる次を見て,利用者の必要性を理解すること ⇒# `§ ~reflowを理解する@https://www.w3.org/WAI/WCAG21/Understanding/reflow.html$ 【`日本語訳@~WCAG21J/Understanding/reflow.html$】, `§ 達成基準 — 視覚的な呈示@https://www.w3.org/WAI/WCAG21/quickref/#visual-presentation$ 【`日本語訳@~WCAG21J/#visual-presentation$】 ◎ Setting container height and line length can pose challenges for people with visual or cognitive disabilities. See WCAG Success Criterion 1.4.10 Reflow and WCAG 1.4.8 Visual Presentation to understand user needs.
謝辞
この文書は、 `Håkon Wium Lie^en 氏による `CSS3-MULTICOL$r における作業の上に築かれた。 また、 次に挙げる貢献者による, いくつかの旧-提案, それらに寄せられた~commentに基づいている: ◎ This document builds upon Håkon Wium Lie’s work in [CSS3-MULTICOL], and is based on several older proposals and comments on older proposals. Contributors include:
Alex Mogilevsky, Andy Clarke, Anton Prowse, Bert Bos, Björn Höhrmann, Cédric Savarese, Chris Lilley, Chris Wilson, Daniel Glazman and Dave Raggett, David Hyatt, David Singer, David Woolley, Elika Etemad, Giovanni Campagna, Ian Hickson. Joost de Valk, Kevin Lawver, L. David Baron, Markus Mielke, Melinda Grant, Michael Day, Morten Stenshorne, Øyvind Stenhaug, Peter Linss, Peter-Paul Koch, Robert O’Callahan, Robert Stevahn, Sergey Genkin, Shelby Moore, Steve Zilles, Sylvain Galineau, Tantek Çelik, Till Halbach