1. はじめに
(このセクションは規定ではありません。)
このモジュールはCSSにおけるマルチカラムレイアウトについて説明します。 本書の機能を使用することで、 スタイルシートは要素の内容を複数のカラムにレイアウトすることを宣言できます。
CSSの他のレイアウト手法は、 親要素に適用すると、 直接の子の表示プロパティを変更します。 例えば、3カラムのグリッドレイアウトを作成した場合、 グリッドコンテナの直接の子は グリッドアイテムとなり、 カラムトラックに配置されます。 各セルに1つずつ要素が入り、必要に応じて追加の行が作成されます。
マルチカラムコンテナの子要素は通常のフローのままですが、 そのフローが複数のカラムに分割されて配置されます。 これらのカラムはインラインサイズが柔軟で、 利用可能なスペースに応じて 表示されるカラムのサイズや数が変化します。
マルチカラムレイアウトはCSSで簡単に記述できます。 以下はシンプルな例です:
カラム数はスタイルシートで明示的に設定することもできます:
ショートハンドのcolumnsプロパティを使えば、 どちらか一方または両方のプロパティを1つの宣言で設定できます。
body{ columns : 2 } body{ columns : 12 em } body{ columns : 2 12 em }
このモジュールで導入された別のプロパティ群は、 カラム間の隙間や罫線について説明します。
body{ column-gap : 1 em ; column-rule : thin solid black; }
上記の例の最初の宣言は、 隣接する2つのカラムの間隔を1emに設定します。 カラムギャップはパディング領域に似ています。 隙間の中央には罫線が入り、 これはcolumn-ruleプロパティで設定できます。
column-ruleプロパティの値はCSSのborderプロパティと 似ています。 borderと同様に、column-ruleはショートハンドプロパティです。
body{ column-gap : 1 em ; column-rule-width : thin; column-rule-style : solid; column-rule-color : black; }
column-fillやcolumn-spanプロパティを使うことで、 マルチカラムレイアウトでさらに多様な表現が可能になります。
h2
要素がすべてのカラムにまたがるように設定されています。
div{ column-fill : balance} h2{ column-span : all}
この仕様では、上記の例全てで使われている10個の新しいプロパティを導入しています。
すべてのカラムプロパティが初期値の場合、 要素のレイアウトは 1カラムだけのマルチカラムレイアウトと同じになります。
1.1. 値の定義
この仕様はCSSプロパティ定義の慣習([CSS21])に従い、 値定義構文([CSS-VALUES-3])を使用しています。 この仕様で定義されていない値型はCSS Values & Units [CSS-VALUES-3]で定義されています。 他のCSSモジュールとの組み合わせによって、これらの値型の定義が拡張される場合もあります。
プロパティ定義に記載された個別値に加え、 本仕様で定義されるすべてのプロパティは CSS全体キーワードもプロパティ値として受け付けます。 可読性のため、ここでは繰り返し記載していません。
2. マルチカラムモデル
column-widthまたはcolumn-countプロパティがautoでない要素は、マルチカラムコンテナ(略してmulticol container)を確立し、 マルチカラムレイアウトのコンテナとして機能します。
テスト
基本的なマルチカラムのテスト。
auto値ではmulticol containerが作成されないことを示すテスト。
マルチカラムプロパティは継承されません。
スクロール可能なカラムのマルチカラム。
高さゼロのマルチカラム。
- multicol-zero-height-001.xht (ライブテスト) (ソース)
- multicol-zero-height-002.html (ライブテスト) (ソース)
- multicol-zero-height-003.html (ライブテスト) (ソース)
従来のCSSボックスモデルでは、 要素の内容は対応する要素のコンテンツボックスに流し込まれます。 マルチカラムレイアウトは、フラグメンテーションコンテキストを導入し、匿名のフラグメンテーションコンテナからなるカラムボックス(略してカラム)を形成します。 これらのカラムボックスは独立したブロックフォーマットコンテキストを確立し、マルチカラムコンテナの内容が流し込まれます。 また、非positionedな子要素の包含ブロックとなります。
img{ display : block; width : 100 % ; }
カラムボックスが新しいブロックフォーマットコンテキストを作るため、 widthはカラムボックスを基準に計算されます。 したがって画像はカラムボックスからはみ出しません:
テスト
- multicol-margin-001.xht (ライブテスト) (ソース)
- multicol-margin-002.xht (ライブテスト) (ソース)
- multicol-margin-003.html (ライブテスト) (ソース)
- multicol-margin-child-001.xht (ライブテスト) (ソース)
- multicol-nested-margin-001.xht (ライブテスト) (ソース)
- multicol-nested-margin-002.xht (ライブテスト) (ソース)
- multicol-nested-margin-003.xht (ライブテスト) (ソース)
- multicol-nested-margin-004.xht (ライブテスト) (ソース)
- multicol-nested-margin-005.xht (ライブテスト) (ソース)
- multicol-collapsing-001.xht (ライブテスト) (ソース)
マルチカラムレイアウト内に現れるfloatは、 floatが現れるカラムボックスを基準に配置されます。
img{ display : block; float : right; }
HTMLでは、画像は「the leg of a chicken」で文が終わった後に現れます。
カラムボックス内で内容がブロック軸方向にフラグメントされてオーバーフローすると、次のカラムボックスへ続きます。
注: 匿名ボックスであるカラムボックスは、 包含ブロックにはなりません 絶対位置指定ボックスのための。 そのようなボックスの包含ブロックを確立するpositionプロパティは、 multicol container(principal box)に適用されます。
テスト
- multicol-containing-001.xht (ライブテスト) (ソース)
- multicol-containing-002.xht (ライブテスト) (ソース)
- multicol-containing-003.html (ライブテスト) (ソース)
- multicol-contained-absolute.html (ライブテスト) (ソース)
- abspos-autopos-contained-by-viewport-000.html (ライブテスト) (ソース)
- abspos-autopos-contained-by-viewport-001.html (ライブテスト) (ソース)
- abspos-multicol-in-second-outer-clipped.html (ライブテスト) (ソース)
.container{ position : relative; column-count : 3 ; } img{ position : absolute; top : 20 px ; left : 40 px }
multi-column containerのフロー外の子孫は、 カラムのバランス調整やmulti-column containerのblock-sizeに影響します。
カラムボックスは、multicol containerのインライン基準方向で並べられ、 multicol lineとして配置されます。 column widthはカラムボックスのインライン方向の長さです。 column heightはカラムボックスのブロック方向の長さです。 1行内のすべてのカラムボックスは同じcolumn widthを持ち、 1行内のすべてのカラムボックスは同じcolumn heightを持ちます。
テスト
以下のテストはカラム内容のベースライン揃えに関するもので、 これは本仕様書では定義されていません。
- baseline-000.html (ライブテスト) (ソース)
- baseline-001.html (ライブテスト) (ソース)
- baseline-002.html (ライブテスト) (ソース)
- baseline-003.html (ライブテスト) (ソース)
- baseline-004.html (ライブテスト) (ソース)
- baseline-005.html (ライブテスト) (ソース)
- baseline-006.html (ライブテスト) (ソース)
- baseline-007.html (ライブテスト) (ソース)
- baseline-008.html (ライブテスト) (ソース)
- as-baseline-aligned-grid-item.html (ライブテスト) (ソース)
以下のテストは、multi-column containerでもあるリスト項目の挙動を確認します。
- multicol-list-item-001.xht (ライブテスト) (ソース)
- multicol-list-item-002.html (ライブテスト) (ソース)
- multicol-list-item-003.html (ライブテスト) (ソース)
- multicol-list-item-004.html (ライブテスト) (ソース)
- multicol-list-item-005.html (ライブテスト) (ソース)
- multicol-list-item-006.html (ライブテスト) (ソース)
- multicol-list-item-007.html (ライブテスト) (ソース)
- multicol-list-item-008.html (ライブテスト) (ソース)
multi-col内のグリッド項目のテスト
以下のテストはtable要素の挙動を確認します。
- multicol-table-cell-001.xht (ライブテスト) (ソース)
- multicol-table-cell-height-001.xht (ライブテスト) (ソース)
- multicol-table-cell-height-002.xht (ライブテスト) (ソース)
- multicol-table-cell-vertical-align-001.xht (ライブテスト) (ソース)
- table-cell-as-multicol.html (ライブテスト) (ソース)
- table-cell-content-change-000.html (ライブテスト) (ソース)
- table-cell-content-change-001.html (ライブテスト) (ソース)
- table-cell-multicol-nested-001.html (ライブテスト) (ソース)
- table-cell-multicol-nested-002.html (ライブテスト) (ソース)
- table-cell-multicol-nested-003.html (ライブテスト) (ソース)
- break-before-multicol-caption.html (ライブテスト) (ソース)
- table-cell-writing-mode-root.html (ライブテスト) (ソース)
- balance-breakafter-before-table-section-crash.html (ライブテスト) (ソース)
- balance-table-with-border-spacing.html (ライブテスト) (ソース)
- balance-table-with-fractional-height-row.html (ライブテスト) (ソース)
以下のテストは描画順序が正しいことを確認します。
- float-and-block.html (ライブテスト) (ソース)
- move-with-text-after-paint.html (ライブテスト) (ソース)
- resize-with-text-after-paint.html (ライブテスト) (ソース)
以下のテストは、マルチカラムプロパティのアニメーションや変形に関連しています。
- column-width-interpolation.html (ライブテスト) (ソース)
- discrete-no-interpolation.html (ライブテスト) (ソース)
- multicol-overflow-positioned-transform-001.html (ライブテスト) (ソース)
- multicol-overflow-transform-001.html (ライブテスト) (ソース)
- resize-multicol-with-fixed-size-children.html (ライブテスト) (ソース)
- resize-in-strict-containment-nested.html (ライブテスト) (ソース)
- remove-child-in-strict-containment-also-spanner.html (ライブテスト) (ソース)
- composited-under-clip-under-multicol.html (ライブテスト) (ソース)
- change-intrinsic-width.html (ライブテスト) (ソース)
- change-fragmentainer-size-000.html (ライブテスト) (ソース)
- change-fragmentainer-size-001.html (ライブテスト) (ソース)
- change-fragmentainer-size-002.html (ライブテスト) (ソース)
- change-fragmentainer-size-003.html (ライブテスト) (ソース)
- hit-test-child-under-perspective.html (ライブテスト) (ソース)
- hit-test-transformed-child.html (ライブテスト) (ソース)
特定の規定テキストに関連しない実装バグに関するテスト。
- multicol-with-monolithic-oof-with-multicol-with-oof.html (ライブテスト) (ソース)
- chrome-bug-1293905.html (ライブテスト) (ソース)
- chrome-bug-1297118.html (ライブテスト) (ソース)
- chrome-bug-1301281.html (ライブテスト) (ソース)
- chrome-bug-1303256.html (ライブテスト) (ソース)
- chrome-bug-1314866.html (ライブテスト) (ソース)
- dynamic-simplified-layout-break-propagation.html (ライブテスト) (ソース)
- float-multicol-crash.html (ライブテスト) (ソース)
- change-abspos-width-in-second-column-crash.html (ライブテスト) (ソース)
- change-out-of-flow-type-and-remove-inner-multicol-crash.html (ライブテスト) (ソース)
- monolithic-oof-in-clipped-container.html (ライブテスト) (ソース)
- move-linebreak-to-different-column.html (ライブテスト) (ソース)
- move-newline-pre-text.html (ライブテスト) (ソース)
- multicol-at-page-boundary-print.html (ライブテスト) (ソース)
- multicol-block-in-inline-crash.html (ライブテスト) (ソース)
- multicol-cached-consumed-bsize-crash.html (ライブテスト) (ソース)
- multicol-column-change-crash.html (ライブテスト) (ソース)
- multicol-dynamic-contain-crash.html (ライブテスト) (ソース)
- multicol-dynamic-transform-crash.html (ライブテスト) (ソース)
- multicol-floats-in-ifc.html (ライブテスト) (ソース)
- multicol-parallel-flow-after-spanner-in-inline.html (ライブテスト) (ソース)
- outline-move-oof-with-inline.html (ライブテスト) (ソース)
- relpos-inline-with-abspos-multicol-gets-block-child.html (ライブテスト) (ソース)
- size-containment-become-multicol-add-inline-child.html (ライブテスト) (ソース)
- sticky-in-abs-in-sticky.html (ライブテスト) (ソース)
- vertical-rl-column-rules-wide-columns.html (ライブテスト) (ソース)
- dynamic-become-multicol-add-oof-inside-inline-crash.html (ライブテスト) (ソース)
- extremely-tall-multicol-with-extremely-tall-child-crash.html (ライブテスト) (ソース)
- file-control-crash.html (ライブテスト) (ソース)
- img-alt-as-multicol-crash.html (ライブテスト) (ソース)
- overflow-scroll-in-multicol-crash.html (ライブテスト) (ソース)
- remove-block-sibling-of-inline-with-block-crash.html (ライブテスト) (ソース)
- subpixel-scroll-crash.html (ライブテスト) (ソース)
- text-child-crash.html (ライブテスト) (ソース)
- with-custom-layout-on-same-element-crash.https.html (ライブテスト) (ソース)
- oof-in-area-001.html (ライブテスト) (ソース)
- oof-in-area-002.html (ライブテスト) (ソース)
- oof-in-area-003.html (ライブテスト) (ソース)
- oof-in-oof-multicol-in-multicol-spanner-in-multicol.html (ライブテスト) (ソース)
- oof-in-oof-multicol-in-relpos-in-oof-in-multicol-in-multicol.html (ライブテスト) (ソース)
- oof-in-oof-multicol-in-relpos-spanner-in-multicol-in-relpos-multicol-in-multicol.html (ライブテスト) (ソース)
- oof-in-oof-multicol-in-relpos-spanner-in-spanner-multicol-in-multicol-in-multicol.html (ライブテスト) (ソース)
- oof-in-oof-multicol-in-spanner-in-multicol-in-spanner-in-nested-multicol.html (ライブテスト) (ソース)
- oof-in-oof-multicol-in-spanner-in-nested-multicol.html (ライブテスト) (ソース)
- oof-in-relpos-in-oof-multicol-in-oof-in-relpos-in-oof-multicol-in-multicol.html (ライブテスト) (ソース)
- oof-in-relpos-in-oof-multicol-in-relpos-in-oof-multicol-in-relpos-multicol.html (ライブテスト) (ソース)
- floated-input-in-inline-next-column.html (ライブテスト) (ソース)
- inline-float-parallel-flow.html (ライブテスト) (ソース)
- table-caption-in-clipped-overflow.html (ライブテスト) (ソース)
- text-in-inline-interrupted-by-float.html (ライブテスト) (ソース)
- increase-prev-sibling-height.html (ライブテスト) (ソース)
- interleaved-bfc-crash.html (ライブテスト) (ソース)
- relayout-fixedpos-in-abspos-in-relpos-in-nested-multicol.html (ライブテスト) (ソース)
- inline-become-oof-container-make-oof-inflow.html (ライブテスト) (ソース)
- multicol-dynamic-change-inside-break-inside-avoid-001.html (ライブテスト) (ソース)
- multicol-dynamic-add-001.html (ライブテスト) (ソース)
- scroll-width-height.tentative.html (ライブテスト) (ソース)
- filter-with-abspos.html (ライブテスト) (ソース)
- add-list-item-marker.html (ライブテスト) (ソース)
マルチカラムに関連する印刷およびページメディアに関するテスト。
- auto-fill-auto-size-001-print.html (ライブテスト) (ソース)
- auto-fill-auto-size-002-print.html (ライブテスト) (ソース)
- multicol-height-002-print.xht (ライブテスト) (ソース)
- named-page.html (ライブテスト) (ソース)
- page-property-ignored.html (ライブテスト) (ソース)
注: 縦書きモードで設定されたテキストでは、ブロック方向は水平方向に進みます。 縦書きモードではカラムは水平方向に配置され、 ブロックの流れの方向は右から左、または左から右のいずれかになります。 column-widthプロパティはそのため、カラムのインラインサイズを指し、 実際の物理的な横幅を指すものではありません。
テスト
縦書きモードに関するテスト。
- orthogonal-writing-mode-shrink-to-fit.html (ライブテスト) (ソース)
- multicol-under-vertical-rl-scroll.html (ライブテスト) (ソース)
- hit-test-in-vertical-rl.html (ライブテスト) (ソース)
マルチカラムコンテナ内の各multicol lineでは、 隣接するカラムボックスはカラムギャップで分離されており、 そのギャップにはカラム罫線が含まれる場合があります。 同じマルチカラムコンテナ内のすべてのカラムギャップは等しいです。 また、同じマルチカラムコンテナ内のすべてのカラム罫線も、表示されていれば等しくなります。 カラム罫線は両方のカラムに内容がある場合のみ表示されます。
最も単純な場合、multicolコンテナには1行のカラムしか含まれず、各カラムの高さはマルチカラムコンテナのコンテンツボックスの使用高さと同じになります。 しかし、フラグメンテーションやスパンナーによって マルチカラムコンテナの内容が複数のmulticol lineに分割されることがあります。
マルチカラムコンテナがページ分割されている場合、各カラムの高さはページによって制約され、内容は次のページの新しいカラムボックスの行に続きます。カラムボックスがページをまたいで分割されることはありません。
同じ効果は、スパン要素がマルチカラムコンテナを分割する場合にも発生します。スパン要素の前のカラムはバランスよく短くなり、その内容に合わせて調整されます。スパン要素の後の内容は、新しいカラムボックスの行に流し込まれます。
マルチカラムコンテナは、通常のブロックコンテナであり、 新しい独立したフォーマットコンテキストを確立します。 その内容は一連のmulticol lineとmulticolスパンナーから構成されます。 各multicol lineはブロックレベルボックスとして機能し、 そのカラムボックスに対してマルチカラムフォーマットコンテキストを確立します。 また、スパンナーはブロックレベルボックスとして機能し、 その型に応じた独立したフォーマットコンテキストを確立します(通常通りdisplay値による)。
マルチカラムコンテナのネストも可能ですが、実装依存の制限がある場合もあります。
テスト
- multicol-nested-002.xht (ライブテスト) (ソース)
- multicol-nested-005.xht (ライブテスト) (ソース)
- multicol-nested-006.html (ライブテスト) (ソース)
- multicol-nested-007.html (ライブテスト) (ソース)
- multicol-nested-008.html (ライブテスト) (ソース)
- multicol-nested-009.html (ライブテスト) (ソース)
- multicol-nested-010.html (ライブテスト) (ソース)
- multicol-nested-011.html (ライブテスト) (ソース)
- multicol-nested-012.html (ライブテスト) (ソース)
- multicol-nested-013.html (ライブテスト) (ソース)
- multicol-nested-014.html (ライブテスト) (ソース)
- multicol-nested-015.html (ライブテスト) (ソース)
- multicol-nested-016.html (ライブテスト) (ソース)
- multicol-nested-017.html (ライブテスト) (ソース)
- multicol-nested-018.html (ライブテスト) (ソース)
- multicol-nested-019.html (ライブテスト) (ソース)
- multicol-nested-020.html (ライブテスト) (ソース)
- multicol-nested-021.html (ライブテスト) (ソース)
- multicol-nested-022.html (ライブテスト) (ソース)
- multicol-nested-023.html (ライブテスト) (ソース)
- multicol-nested-024.html (ライブテスト) (ソース)
- multicol-nested-025.html (ライブテスト) (ソース)
- multicol-nested-026.html (ライブテスト) (ソース)
- multicol-nested-027.html (ライブテスト) (ソース)
- multicol-nested-028.html (ライブテスト) (ソース)
- multicol-nested-029.html (ライブテスト) (ソース)
- multicol-nested-030.html (ライブテスト) (ソース)
- multicol-nested-031.html (ライブテスト) (ソース)
- nested-as-balanced-legend.html (ライブテスト) (ソース)
- nested-as-nested-balanced-legend.html (ライブテスト) (ソース)
- nested-floated-multicol-with-tall-margin.html (ライブテスト) (ソース)
- nested-multicol-and-float-with-tall-padding-before-float.html (ライブテスト) (ソース)
- nested-multicol-and-float-with-tall-padding.html (ライブテスト) (ソース)
- nested-multicol-fieldset-tall-trailing-border-freeze.html (ライブテスト) (ソース)
- nested-multicol-fieldset-tall-trailing-padding.html (ライブテスト) (ソース)
- nested-multicol-in-svg-foreignobject.html (ライブテスト) (ソース)
- nested-multicol-nested-flex.html (ライブテスト) (ソース)
- nested-multicol-with-float-between.html (ライブテスト) (ソース)
- nested-oof-multicol-with-monolithic-child.html (ライブテスト) (ソース)
- nested-oof-multicol-with-oof-needing-additional-columns.html (ライブテスト) (ソース)
- nested-oof-multicol-with-padding.html (ライブテスト) (ソース)
- nested-with-fragmented-oof-negative-top-offset.html (ライブテスト) (ソース)
- nested-with-multicol-table-caption.html (ライブテスト) (ソース)
- multicol-table-caption-parallel-flow-after-spanner-in-inline.html (ライブテスト) (ソース)
- nested-with-multicol-table-cell.html (ライブテスト) (ソース)
- nested-with-oof-inside-fixed-width.html (ライブテスト) (ソース)
- nested-with-percentage-size-and-oof.html (ライブテスト) (ソース)
- nested-with-tall-padding-and-oof.html (ライブテスト) (ソース)
- nested-with-tall-padding.html (ライブテスト) (ソース)
- oof-in-nested-line-float.html (ライブテスト) (ソース)
- oof-nested-multicol-inside-oof.html (ライブテスト) (ソース)
- relayout-nested-with-oof.html (ライブテスト) (ソース)
- repeated-section-in-nested-table-nested-multicol.html (ライブテスト) (ソース)
- repeated-table-footer-in-caption-nested-multicol.html (ライブテスト) (ソース)
- nested-balanced-monolithic-multicol-crash.html (ライブテスト) (ソース)
- nested-balanced-very-tall-content-crash.html (ライブテスト) (ソース)
- nested-floated-shape-outside-multicol-with-monolithic-child-crash.html (ライブテスト) (ソース)
- nested-with-overflowing-padding-crash.html (ライブテスト) (ソース)
- triply-nested-with-fixedpos-in-abspos-crash.html (ライブテスト) (ソース)
- fixed-in-nested-multicol-with-transform-container.html (ライブテスト) (ソース)
- fixed-in-nested-multicol-with-viewport-container.html (ライブテスト) (ソース)
- fixed-in-nested-multicol.html (ライブテスト) (ソース)
- nested-after-float-clearance.html (ライブテスト) (ソース)
- nested-at-outer-boundary-as-fieldset.html (ライブテスト) (ソース)
- nested-at-outer-boundary-as-float.html (ライブテスト) (ソース)
- nested-at-outer-boundary-as-legend.html (ライブテスト) (ソース)
- nested-floated-multicol-with-monolithic-child.html (ライブテスト) (ソース)
- nested-oofs-in-relative-multicol.html (ライブテスト) (ソース)
- nested-past-fragmentation-line.html (ライブテスト) (ソース)
- nested-with-too-tall-line.html (ライブテスト) (ソース)
- oof-nested-in-single-column.html (ライブテスト) (ソース)
- nested-non-auto-inline-size-offset-top.html (ライブテスト) (ソース)
- fixedpos-static-pos-with-viewport-cb-001.html (ライブテスト) (ソース)
- fixedpos-static-pos-with-viewport-cb-002.html (ライブテスト) (ソース)
- fixedpos-static-pos-with-viewport-cb-003.html (ライブテスト) (ソース)
- multicol-height-block-child-001.xht (ライブテスト) (ソース)
注: カラムボックスにプロパティや値を設定することはできません。 例えば、特定のカラムボックスの背景を設定したり、カラムボックスにパディング・マージン・ボーダーの概念を持たせることはできません。 今後の仕様で追加機能が導入される可能性があります。 例えば、異なる幅や異なる背景色のカラムをサポートするようになるかもしれません。
注: カラム高さがビューポートより大きいmulticolコンテナはアクセシビリティ上の問題となる場合があります。 詳細はアクセシビリティに関する考慮事項をご覧ください。
3. カラム数とカラム幅
マルチカラムコンテンツをレイアウトする際、カラム数とカラム幅を決定することは基本です。 これらのプロパティでカラム数とカラム幅を設定します:
三つ目のプロパティcolumnsは、 column-widthと column-countの両方を設定するショートハンドプロパティです。
明示的なカラム改ページ、内容、高さ制約などの他の要素も、実際のカラム数やカラム幅に影響する場合があります。
3.1. カラムのインラインサイズ:column-widthプロパティ
名前: | column-width |
---|---|
値: | auto | <length [0,∞]> |
初期値: | auto |
適用対象: | ブロックコンテナ(ただしtable wrapper boxは除く) |
継承: | no |
百分率: | 該当なし |
算出値: | キーワードautoまたは絶対長さ |
標準順序: | 文法通り |
アニメーション型: | 算出値型による |
このプロパティはmulticolコンテナのカラムの幅を記述します。
- auto
- 他のプロパティ(例えばcolumn-countがauto以外の場合など)によってカラム幅が決定されることを意味します。
- <length [0,∞]>
- 最適なカラム幅を記述します。 実際のカラム幅は、利用可能なスペースに応じてより広くなる場合があります。 また、指定されたカラム幅より少ないスペースしかない場合は、より狭くなることもあります。 負の値は許可されません。 使用値は最低1pxにクランプされます。
テスト
- multicol-basic-003.html (ライブテスト) (ソース)
- multicol-basic-008.xht (ライブテスト) (ソース)
- multicol-reduce-000.xht (ライブテスト) (ソース)
- multicol-width-001.xht (ライブテスト) (ソース)
- multicol-width-002.xht (ライブテスト) (ソース)
- multicol-width-003.xht (ライブテスト) (ソース)
- multicol-width-005.html (ライブテスト) (ソース)
- multicol-width-ch-001.xht (ライブテスト) (ソース)
- multicol-width-negative-001.xht (ライブテスト) (ソース)
- multicol-width-invalid-001.xht (ライブテスト) (ソース)
- multicol-width-large-001.xht (ライブテスト) (ソース)
- multicol-width-large-002.xht (ライブテスト) (ソース)
- multicol-inherit-003.xht (ライブテスト) (ソース)
- column-width-computed.html (ライブテスト) (ソース)
- column-width-invalid.html (ライブテスト) (ソース)
- column-width-valid.html (ライブテスト) (ソース)
- multicol-width-small-001.xht (ライブテスト) (ソース)
div{ width : 100 px ; column-width : 45 px ; column-gap : 0 ; column-rule : none; }
100px幅の要素の内部には、45px幅のカラムが2つ入る余地があります。 利用可能なスペースを埋めるために、 実際のカラム幅は50pxに増加します。
div{ width : 40 px ; column-width : 45 px ; column-gap : 0 ; column-rule : none; }
利用可能なスペースが指定されたカラム幅より小さいため、 実際のカラム幅は縮小されます。
column-widthプロパティを縦書きテキストでも使えるようにするため、 カラム幅はカラム内の行ボックスの長さを意味します。
注: column-widthをある程度柔軟にしている理由は、 多様な画面サイズに適応したスケーラブルなデザインを実現するためです。 カラム幅を正確に指定するには、 カラムギャップとmulticolコンテナの幅(横書きの場合)も指定する必要があります。
3.2. カラム数:column-countプロパティ
名前: | column-count |
---|---|
値: | auto | <integer [1,∞]> |
初期値: | auto |
適用対象: | ブロックコンテナ(ただしtable wrapper boxは除く) |
継承: | no |
百分率: | 該当なし |
算出値: | 指定値 |
標準順序: | 文法通り |
アニメーション型: | 算出値による |
このプロパティはmulticolコンテナのカラム数を記述します。
- auto
- カラム数は他のプロパティ(例えばcolumn-widthがauto以外の場合など)によって決定されることを意味します。
- <integer [1,∞]>
- 要素の内容が流し込まれる最適なカラム数を記述します。 値は0より大きくなければなりません。 column-widthとcolumn-countの両方がauto以外の場合、 整数値は最大カラム数を示します。
テスト
- multicol-count-001.xht (ライブテスト) (ソース)
- multicol-count-002.xht (ライブテスト) (ソース)
- multicol-basic-006.xht (ライブテスト) (ソース)
- multicol-width-count-001.xht (ライブテスト) (ソース)
- multicol-width-count-002.xht (ライブテスト) (ソース)
- multicol-columns-toolong-001.xht (ライブテスト) (ソース)
- multicol-count-negative-001.xht (ライブテスト) (ソース)
- multicol-count-negative-002.xht (ライブテスト) (ソース)
- multicol-count-non-integer-001.xht (ライブテスト) (ソース)
- multicol-count-non-integer-002.xht (ライブテスト) (ソース)
- multicol-count-non-integer-003.xht (ライブテスト) (ソース)
- multicol-inherit-001.xht (ライブテスト) (ソース)
- multicol-inherit-002.xht (ライブテスト) (ソース)
- column-count-invalid.html (ライブテスト) (ソース)
- column-count-valid.html (ライブテスト) (ソース)
- column-count-computed.html (ライブテスト) (ソース)
- column-count-interpolation.html (ライブテスト) (ソース)
- large-actual-column-count.html (ライブテスト) (ソース)
- with-custom-layout-on-same-element.https.html (ライブテスト) (ソース)
3.3. column-widthとcolumn-countのショートハンド:columnsプロパティ
名前: | columns |
---|---|
値: | <'column-width'> || <'column-count'> |
初期値: | 各個別プロパティを参照 |
適用対象: | 各個別プロパティを参照 |
継承: | 各個別プロパティを参照 |
百分率: | 各個別プロパティを参照 |
算出値: | 各個別プロパティを参照 |
アニメーション型: | 各個別プロパティを参照 |
標準順序: | 文法通り |
これはcolumn-widthとcolumn-countを設定するためのショートハンドプロパティです。 省略された値は初期値になります。
columns : 12 em ; /* column-width: 12em; column-count: auto */ columns: auto12 em ; /* 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 */
テスト
- multicol-columns-001.xht (ライブテスト) (ソース)
- multicol-columns-002.xht (ライブテスト) (ソース)
- multicol-columns-003.xht (ライブテスト) (ソース)
- multicol-columns-004.xht (ライブテスト) (ソース)
- multicol-columns-005.xht (ライブテスト) (ソース)
- multicol-columns-006.xht (ライブテスト) (ソース)
- multicol-columns-007.xht (ライブテスト) (ソース)
- multicol-columns-invalid-001.xht (ライブテスト) (ソース)
- multicol-columns-invalid-002.xht (ライブテスト) (ソース)
- multicol-basic-001.html (ライブテスト) (ソース)
- multicol-basic-003.html (ライブテスト) (ソース)
- multicol-basic-005.xht (ライブテスト) (ソース)
- multicol-basic-007.xht (ライブテスト) (ソース)
- columns-invalid.html (ライブテスト) (ソース)
- columns-valid.html (ライブテスト) (ソース)
3.4. 疑似アルゴリズム
下記の疑似アルゴリズムは、column-count(N)とcolumn-width(W)の使用値を決定します。疑似アルゴリズムにはもう一つの変数があります:Uはマルチカラムコンテナの使用幅です。
注: マルチカラムコンテナの使用幅Uは要素の内容によって決まる場合があり、 その場合、column-countやcolumn-widthプロパティの算出値にも依存します。 この仕様ではUの算出方法は定義されていません。 他のモジュール(おそらくBasic Box Model [CSS3BOX]やBox Sizing Module [CSS3-SIZING])で定義される予定です。
テスト
floor(X)
関数は、X以下の最大の整数Yを返します。
(01) if ((column-width = auto) and (column-count = auto)) then (02) exit; /* not a multicol container */ (03) if column-width = auto then (04) N := column-count (05) else if column-count = auto then (06) N := max(1, (07) floor((U + column-gap)/(column-width + column-gap))) (08) else (09) N := min(column-count, max(1, (10) floor((U + column-gap)/(column-width + column-gap))))
そして:
(11) W := max(0, ((U + column-gap)/N - column-gap))
自動繰り返しカラム数を求める際、UAはゼロ除算を避けるためにカラムサイズをUA指定値まで切り捨てなければなりません。 この下限値は1px以下が推奨されます。
ページメディアなどのフラグメント化されたコンテキストでは、 ユーザーエージェントはこの計算をフラグメントごとに行う場合があります。
column-countの使用値は明示的なカラム改ページや高さ制約を考慮せずに計算されますが、 実際の値はそれらも考慮されます。
div{ width : 40 em ; columns : 20 em ; column-gap : 0 ; } p{ break-after : column; }
< div > < p > one< p > two< p > three</ div >
div{ width : 80 em ; height : 10 em ; columns : 20 em ; column-gap : 0 ; column-fill : auto; }
< div > foo</ div >
計算されたcolumn-countはauto、 使用値は4、 実際のcolumn-countは1です。
3.5. スタッキングコンテキスト
マルチカラムコンテナ内のすべてのカラムボックスは同じスタッキングコンテキストに属し、 内容の描画順序はCSS 2.1で指定された通りです。 カラムボックスは新しいスタッキングコンテキストを確立しません。
4. カラムギャップと罫線
カラムギャップと罫線は同じmulticolコンテナ内のカラム間に配置されます。 カラムギャップと罫線の長さはカラムの高さと等しくなります。 カラムギャップはスペースを占めます。 つまり、カラムギャップは隣接するカラムの内容を(同じmulticolコンテナ内で)離して配置します。
テスト
- multicol-height-001.xht (ライブテスト) (ソース)
- multicol-nested-column-rule-001.xht (ライブテスト) (ソース)
- multicol-nested-column-rule-002.html (ライブテスト) (ソース)
- multicol-nested-column-rule-003.html (ライブテスト) (ソース)
- multicol-rule-nested-balancing-001.html (ライブテスト) (ソース)
- multicol-rule-nested-balancing-002.html (ライブテスト) (ソース)
- multicol-rule-nested-balancing-003.html (ライブテスト) (ソース)
- multicol-rule-nested-balancing-004.html (ライブテスト) (ソース)
カラム罫線はカラムギャップの中央に描画され、端点はmulticolコンテナの対向するコンテンツ端に位置します。 カラム罫線はスペースを占有しません。 つまり、カラム罫線の有無や太さによって他のものの配置が変わることはありません。 カラム罫線がギャップより太い場合、隣接するカラムボックスは罫線に重なり、 罫線がmulticolコンテナのボックス外にまで伸びることがあります。 カラム罫線はmulticolコンテナのボーダーのすぐ上に描画されます。 スクロール可能なmulticolコンテナの場合、 コンテナのボーダーや背景は当然スクロールしませんが、 罫線はカラムと一緒にスクロールする必要があります。 カラム罫線は、両方のカラムに内容がある場合のみ描画されます。
テスト
基本的なカラム罫線のテスト
- multicol-rule-003.xht (ライブテスト) (ソース)
- multicol-rule-004.xht (ライブテスト) (ソース)
- multicol-rule-fraction-002.xht (ライブテスト) (ソース)
カラム罫線がギャップよりも太い場合、隣接するボックスが重なります。
- multicol-rule-001.xht (ライブテスト) (ソース)
- multicol-rule-large-001.xht (ライブテスト) (ソース)
- multicol-rule-large-002.xht (visual test) (ソース)
カラム罫線は、両方のカラムに内容がある場合のみ描画されます。
- multicol-count-computed-003.xht (ライブテスト) (ソース)
- multicol-count-computed-005.xht (ライブテスト) (ソース)
- broken-column-rule-1.html (ライブテスト) (ソース)
背景やカラム罫線の挙動に関するテスト。
- multicol-breaking-000.html (ライブテスト) (ソース)
- multicol-breaking-001.html (ライブテスト) (ソース)
- multicol-breaking-002.html (ライブテスト) (ソース)
- multicol-breaking-003.html (ライブテスト) (ソース)
- multicol-breaking-004.html (ライブテスト) (ソース)
- multicol-breaking-005.html (ライブテスト) (ソース)
- multicol-breaking-006.html (ライブテスト) (ソース)
- multicol-breaking-nobackground-000.html (ライブテスト) (ソース)
- multicol-breaking-nobackground-001.html (ライブテスト) (ソース)
- multicol-breaking-nobackground-002.html (ライブテスト) (ソース)
- multicol-breaking-nobackground-003.html (ライブテスト) (ソース)
- multicol-breaking-nobackground-004.html (ライブテスト) (ソース)
- multicol-breaking-nobackground-005.html (ライブテスト) (ソース)
4.1. カラム間のガター:column-gapプロパティ
column-gapプロパティは[CSS3-ALIGN]で定義されています。
マルチカラムフォーマットコンテキストにおいて、normalがcolumn-gapプロパティの使用値となる場合、その値は1emです。 これにより初期値が使われてもカラムが読みやすく保たれます。 カラム間にカラム罫線がある場合、 罫線はギャップの中央に表示されます。
テスト
- multicol-gap-fraction-001.xht (ライブテスト) (ソース)
- multicol-gap-fraction-002.html (ライブテスト) (ソース)
- multicol-gap-large-001.xht (ライブテスト) (ソース)
- multicol-gap-large-002.xht (ライブテスト) (ソース)
- multicol-gap-negative-001.xht (ライブテスト) (ソース)
- multicol-gap-000.xht (ライブテスト) (ソース)
- multicol-gap-002.xht (ライブテスト) (ソース)
- multicol-gap-percentage-001.html (ライブテスト) (ソース)
- multicol-gap-001.xht (ライブテスト) (ソース)
- multicol-gap-003.xht (ライブテスト) (ソース)
ギャップがアニメーション可能であることをテストします。
- multicol-gap-animation-001.html (ライブテスト) (ソース)
- multicol-gap-animation-002.html (ライブテスト) (ソース)
- multicol-gap-animation-003.html (ライブテスト) (ソース)
4.2. カラム罫線の色:column-rule-color プロパティ
名前: | column-rule-color |
---|---|
値: | <color> |
初期値: | currentcolor |
適用対象: | multicolコンテナ |
継承: | no |
百分率: | 該当なし |
算出値: | 算出された色 |
標準順序: | 文法通り |
アニメーション型: | 算出値型による |
- <color>
- カラム罫線の色を指定します。
テスト
- multicol-rule-color-001.xht (ライブテスト) (ソース)
- multicol-rule-color-inherit-001.xht (ライブテスト) (ソース)
- multicol-rule-color-inherit-002.xht (ライブテスト) (ソース)
- column-rule-color-computed.html (ライブテスト) (ソース)
- column-rule-color-valid.html (ライブテスト) (ソース)
- column-rule-color-invalid.html (ライブテスト) (ソース)
- column-rule-color-interpolation.html (ライブテスト) (ソース)
4.3. カラム罫線のスタイル:column-rule-style プロパティ
名前: | column-rule-style |
---|---|
値: | <line-style> |
初期値: | none |
適用対象: | multicolコンテナ |
継承: | no |
百分率: | 該当なし |
算出値: | 指定されたキーワード |
標準順序: | 文法通り |
アニメーション型: | 離散的 |
column-rule-styleプロパティは、要素のカラム間に表示される罫線のスタイルを設定します。 <line-style>の値は、ボーダーの折りたたみモデルと同様に解釈されます。
テスト
none値は、column-rule-widthの算出値を0に強制します。
4.4. カラム罫線の幅:column-rule-width プロパティ
名前: | column-rule-width |
---|---|
値: | <line-width> |
初期値: | medium |
適用対象: | multicolコンテナ |
継承: | no |
百分率: | 該当なし |
算出値: | 絶対長さ、ボーダー幅としてスナップされた値; カラム罫線スタイルがnoneまたは の場合は0 |
標準順序: | 文法通り |
アニメーション型: | 算出値型による |
このプロパティはカラム間の罫線の幅を設定します。 負の値は許可されません。
テスト
- multicol-rule-fraction-001.xht (ライブテスト) (ソース)
- multicol-rule-fraction-003.xht (ライブテスト) (ソース)
- multicol-rule-px-001.xht (ライブテスト) (ソース)
- multicol-rule-percent-001.xht (ライブテスト) (ソース)
- subpixel-column-rule-width.tentative.html (ライブテスト) (ソース)
- column-rule-width-computed.html (ライブテスト) (ソース)
- column-rule-width-invalid.html (ライブテスト) (ソース)
- column-rule-width-valid.html (ライブテスト) (ソース)
- column-rule-width-interpolation.html (ライブテスト) (ソース)
4.5. カラム罫線のショートハンド:column-ruleプロパティ
名前: | column-rule |
---|---|
値: | <'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'> |
初期値: | 各個別プロパティを参照 |
適用対象: | 各個別プロパティを参照 |
継承: | 各個別プロパティを参照 |
百分率: | 各個別プロパティを参照 |
算出値: | 各個別プロパティを参照 |
アニメーション型: | 各個別プロパティを参照 |
標準順序: | 文法通り |
このプロパティは、column-rule-width、column-rule-style、column-rule-colorをスタイルシート上で同時に設定するためのショートハンドです。 省略された値は初期値になります。
テスト
- multicol-shorthand-001.xht (ライブテスト) (ソース)
- multicol-rule-shorthand-001.xht (ライブテスト) (ソース)
- multicol-rule-shorthand-2.xht (ライブテスト) (ソース)
- multicol-rule-000.xht (ライブテスト) (ソース)
- multicol-rule-002.xht (ライブテスト) (ソース)
- multicol-rule-dashed-000.xht (ライブテスト) (ソース)
- multicol-rule-dotted-000.xht (ライブテスト) (ソース)
- multicol-rule-double-000.xht (ライブテスト) (ソース)
- multicol-rule-outset-000.xht (ライブテスト) (ソース)
- multicol-rule-none-000.xht (ライブテスト) (ソース)
- multicol-rule-hidden-000.xht (ライブテスト) (ソース)
- multicol-rule-inset-000.xht (ライブテスト) (ソース)
- multicol-rule-groove-000.xht (ライブテスト) (ソース)
- multicol-rule-ridge-000.xht (ライブテスト) (ソース)
- multicol-rule-solid-000.xht (ライブテスト) (ソース)
- column-rule-computed.html (ライブテスト) (ソース)
- column-rule-invalid.html (ライブテスト) (ソース)
- column-rule-valid.html (ライブテスト) (ソース)
- column-rule-shorthand.html (ライブテスト) (ソース)
body{ column-gap : 35 px ; column-rule-width : 35 px ; column-rule-style : solid; column-rule-color : black; }
5. カラム区切り
コンテンツが複数のカラムにレイアウトされる場合、 ユーザーエージェントはカラム区切りの位置を決定しなければなりません。 コンテンツをカラムに分割する問題は、ページに分割する問題と似ており、 これはCSS 2.1の13.3.3節[CSS21]で説明されています。
カラム区切りをページ区切りと同じプロパティで指定できるように、3つの新しいプロパティが導入されています:break-before、break-after、break-insideです。
5.1. 分割制御:break-before、break-after、break-insideプロパティ
break-before、break-after、break-insideは[CSS3-BREAK]で定義されています。
テスト
- multicol-break-000.xht (ライブテスト) (ソース)
- multicol-break-001.xht (ライブテスト) (ソース)
- multicol-br-inside-avoidcolumn-001.xht (ライブテスト) (ソース)
- moz-multicol3-column-balancing-break-inside-avoid-1.html (manual test) (ソース)
6. カラムのまたぎ
column-spanプロパティを使うことで、要素を複数のカラムにまたがって配置することができます。
6.1. 要素をカラムにまたがらせる:column-spanプロパティ
名前: | column-span |
---|---|
値: | none | all |
初期値: | none |
適用対象: | フロー内のブロックレベル要素 |
継承: | no |
百分率: | 該当なし |
算出値: | 指定されたキーワード |
標準順序: | 文法通り |
アニメーション型: | 離散的 |
このプロパティは要素がいくつのカラムにまたがるかを指定します。値は以下の通りです:
- none
- 要素は複数のカラムにまたがりません。
- all
-
要素はカラム区切りを強制し、フロー外となって、最も近いマルチカラム祖先のすべてのカラムにまたがります(同じブロックフォーマットコンテキスト内)。
通常フローの内容で要素より前に現れるものは、
直前のマルチカラム行内で自動的にすべてのカラムに均等に分配され、
要素の後のコンテンツは新しいマルチカラム行に流し込まれます。
この要素は独立したフォーマットコンテキストを確立します。
注: この要素が新しいフォーマットコンテキストを確立するかどうかは、要素がマルチカラムの子孫かどうかには依存しません。 column-spanがallのときは必ず確立します。 これは、後でマルチカラムが削除された場合や、メディアクエリで特定状況下でマルチカラムが無効化された場合でも、デザインの堅牢性を高めるためです。
テスト
- multicol-span-000.xht (ライブテスト) (ソース)
- multicol-span-all-001.xht (ライブテスト) (ソース)
- multicol-span-all-003.xht (ライブテスト) (ソース)
- multicol-span-all-block-sibling-003.xht (ライブテスト) (ソース)
- multicol-span-all-margin-001.xht (ライブテスト) (ソース)
- multicol-span-all-margin-002.xht (ライブテスト) (ソース)
- multicol-span-all-margin-003.html (ライブテスト) (ソース)
- multicol-span-all-margin-bottom-001.xht (ライブテスト) (ソース)
- multicol-span-all-margin-nested-001.xht (ライブテスト) (ソース)
- multicol-span-all-margin-nested-002.xht (ライブテスト) (ソース)
- multicol-span-all-margin-nested-firstchild-001.xht (ライブテスト) (ソース)
- multicol-span-float-001.xht (ライブテスト) (ソース)
- multicol-span-float-002.html (ライブテスト) (ソース)
- multicol-span-float-003.html (ライブテスト) (ソース)
- inline-block-and-column-span-all.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-remove-001.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-001.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-remove-002.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-002.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-remove-003.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-003.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-remove-004.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-004.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-005.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-remove-005.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-remove-006.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-006.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-remove-007.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-007.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-008.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-009.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-010.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-011.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-012.html (ライブテスト) (ソース)
- multicol-span-all-dynamic-add-013.html (ライブテスト) (ソース)
- multicol-span-all-children-height-001.html (ライブテスト) (ソース)
- multicol-span-all-children-height-002.html (ライブテスト) (ソース)
- multicol-span-all-children-height-003.html (ライブテスト) (ソース)
- multicol-span-all-children-height-004a.html (ライブテスト) (ソース)
- multicol-span-all-children-height-004b.html (ライブテスト) (ソース)
- multicol-span-all-children-height-005.html (ライブテスト) (ソース)
- multicol-span-all-children-height-006.html (ライブテスト) (ソース)
- multicol-span-all-children-height-007.html (ライブテスト) (ソース)
- multicol-span-all-children-height-008.html (ライブテスト) (ソース)
- multicol-span-all-children-height-009.html (ライブテスト) (ソース)
- multicol-span-all-children-height-010.html (ライブテスト) (ソース)
- multicol-span-all-children-height-011.html (ライブテスト) (ソース)
- multicol-span-all-children-height-012.html (ライブテスト) (ソース)
- multicol-span-all-children-height-013.html (ライブテスト) (ソース)
- multicol-span-all-004.html (ライブテスト) (ソース)
- multicol-span-all-005.html (ライブテスト) (ソース)
- multicol-span-all-006.html (ライブテスト) (ソース)
- multicol-span-all-007.html (ライブテスト) (ソース)
- multicol-span-all-008.html (ライブテスト) (ソース)
- multicol-span-all-009.html (ライブテスト) (ソース)
- multicol-span-all-010.html (ライブテスト) (ソース)
- multicol-span-all-011.html (ライブテスト) (ソース)
- multicol-span-all-012.html (ライブテスト) (ソース)
- multicol-span-all-013.html (ライブテスト) (ソース)
- multicol-span-all-014.html (ライブテスト) (ソース)
- multicol-span-all-015.html (ライブテスト) (ソース)
- multicol-span-all-016.html (ライブテスト) (ソース)
- multicol-span-all-017.html (ライブテスト) (ソース)
- multicol-span-all-018.html (ライブテスト) (ソース)
- multicol-span-all-019.html (ライブテスト) (ソース)
- multicol-span-all-rule-001.html (ライブテスト) (ソース)
- multicol-span-all-button-001.html (ライブテスト) (ソース)
- multicol-span-all-button-002.html (ライブテスト) (ソース)
- multicol-span-all-button-003.html (ライブテスト) (ソース)
- multicol-span-all-fieldset-001.html (ライブテスト) (ソース)
- multicol-span-all-fieldset-002.html (ライブテスト) (ソース)
- multicol-span-all-fieldset-003.html (ライブテスト) (ソース)
- multicol-span-all-restyle-001.html (ライブテスト) (ソース)
- multicol-span-all-restyle-002.html (ライブテスト) (ソース)
- multicol-span-all-restyle-003.html (ライブテスト) (ソース)
- multicol-span-all-restyle-004.html (ライブテスト) (ソース)
- multicol-span-all-list-item-001.html (ライブテスト) (ソース)
- multicol-span-all-list-item-002.html (ライブテスト) (ソース)
- float-with-line-after-spanner.html (ライブテスト) (ソース)
- parallel-flow-after-spanner-001.html (ライブテスト) (ソース)
- parallel-flow-after-spanner-002.html (ライブテスト) (ソース)
- margin-and-break-before-child-spanner.html (ライブテスト) (ソース)
- multicol-width-004.html (ライブテスト) (ソース)
複数のカラムにまたがる要素は、マルチカラムスパン要素と呼ばれ、その要素が作成するボックスはマルチカラムスパンナーと呼ばれます。
スパンナーの包含ブロックはマルチカラムコンテナ自体です。 そのため、スパンナー自体が包含ブロックを確立しない場合、 スパンナー内の絶対位置指定ボックスの包含ブロックチェーンは、マルチカラムコンテナまで直接スキップします(スパンナーとマルチカラムコンテナの間の祖先はスキップされます)。
スパンナーはフロー外となりますが、 これはスパン要素の描画順序 [CSS21]には影響しません。
h2
要素がサンプル文書の6番目の文の後(つまり "the leg of a"
の後)に追加されています。
このスタイルが適用されます:
h2{ column-span : all; background : silver}
column-spanにallを設定すると、
h2
要素より前に現れるすべてのコンテンツがh2
要素の上に表示されます。
スパンナーがマルチカラム行を分割するため、 カラム罫線も中断されることに注意してください(罫線はマルチカラム行内のカラム間のみ描画されます)。
スパン要素は、同じフォーマットコンテキストに属していて、 スパン要素とマルチカラムコンテナの間に固定位置子孫のための包含ブロックを確立するものがなければ、第一レベルの子孫より深い階層にあっても問題ありません。
< article > < section > < div class = "spanner" > 試みられたスパンナー</ div > </ section > </ article >
article{ columns : 2 ; } section{ transform : rotate ( 90 deg ); } .spanner{ column-span : all; background : silver; }
テスト
スパンナーの前のフラグメントが空の場合、特別なことは何も起こりません。 上部のマージン/ボーダー/パディングは、空のフラグメントとしてスパン要素の上に表示されます。
article
要素です。
この親要素の中には段落とsection要素が入っています。
sectionにはallが設定されたh2
見出しがあり、これは3つのカラムすべてにまたがりますが、そのsection自体はカラムボックス内にとどまります。
h2
はsectionの最初の子要素です。
つまり、このセクションのマージン、
ボーダー(図中赤色で示される)、
パディングは、空のフラグメントとしてスパンするh2
の前に現れます。
< article > < p > ...</ p > < section > < h2 > An h2 element</ h2 > < p > ...</ p > </ section > </ article >
section{ border : 2 px solid red; margin-top : 65 px ; padding-top : 20 px ; } h2{ column-span : all; background : silver}
h2
要素はcolumn-span: allに設定されており、
sectionには赤いボーダーと上側のパディング、マージンがありますテスト
- spanner-fragmentation-000.html (ライブテスト) (ソース)
- spanner-fragmentation-001.html (ライブテスト) (ソース)
- spanner-fragmentation-002.html (ライブテスト) (ソース)
- spanner-fragmentation-003.html (ライブテスト) (ソース)
- spanner-fragmentation-004.html (ライブテスト) (ソース)
- spanner-fragmentation-005.html (ライブテスト) (ソース)
- spanner-fragmentation-006.html (ライブテスト) (ソース)
- spanner-fragmentation-007.html (ライブテスト) (ソース)
- spanner-fragmentation-008.html (ライブテスト) (ソース)
- spanner-fragmentation-009.html (ライブテスト) (ソース)
- spanner-fragmentation-010.html (ライブテスト) (ソース)
- spanner-fragmentation-011.html (ライブテスト) (ソース)
- spanner-fragmentation-012.html (ライブテスト) (ソース)
スパン要素は、通常よりも多くのスペースを占有します。 スペースが限られている場合、スパン要素のための空間を確保できないことがあります。 このような場合、ユーザーエージェントはこのプロパティにnoneが指定されたかのように扱うことがあります。
h2
要素がコンテンツの後半に現れ、
マルチカラムコンテナの高さが制限されています。
そのため、h2
要素はオーバーフロー内に現れ、
要素をスパンさせるための空間がありません。
結果として、この要素はcolumn-span: noneが指定されたかのように表示されます。
H2
要素は4番目の段落の後に現れます。
スパンナーはブロックレベルのボックスなので、 2つの隣接するスパンナーのマージンは互いに折り重なります(collapse)。 絶対配置されたアイテムだけで分離された2つのスパンナーのマージンも折り重なります。 絶対配置アイテムはカラムボックスを作成しないためです。 カラムボックスは新しいブロックフォーマットコンテキストを確立するため、 カラムボックス内の要素のマージンはスパンナーのマージンとは折り重なりません。
h2{ margin : 16 px 0 ; column-span : all; background : silver} p{ margin-top : 16 px }
テスト
スパンナー関連の追加テスト。
- abspos-in-multicol-with-spanner-crash.html (ライブテスト) (ソース)
- body-becomes-spanner-html-becomes-vertical-rl.html (ライブテスト) (ソース)
- fit-content-with-spanner-and-auto-scrollbar-sibling.html (ライブテスト) (ソース)
- float-becomes-non-float-spanner-surprises-inside.html (ライブテスト) (ソース)
- float-becomes-spanner.html (ライブテスト) (ソース)
- multicol-floats-after-column-span-crash.html (ライブテスト) (ソース)
- negative-margin-on-column-spanner.html (ライブテスト) (ソース)
- nested-spanner-with-negative-margin.html (ライブテスト) (ソース)
- oof-becomes-spanner.html (ライブテスト) (ソース)
- oof-in-additional-column-before-spanner.html (ライブテスト) (ソース)
- relpos-spanner-with-spanner-child-becomes-regular.html (ライブテスト) (ソース)
- remove-spanner-after-spanner-in-inline-before-inline.html (ライブテスト) (ソース)
- remove-spanner-in-table-caption-nested-multicol.html (ライブテスト) (ソース)
- restricted-height-bottom-border-overflow-and-spanner.html (ライブテスト) (ソース)
- scrollable-spanner-in-nested.html (ライブテスト) (ソース)
- spanner-after-parallel-flow.html (ライブテスト) (ソース)
- spanner-in-inline-after-very-tall-content-001.html (ライブテスト) (ソース)
- spanner-in-inline-after-very-tall-content-002.html (ライブテスト) (ソース)
- spanner-in-overflowed-container-before-float.html (ライブテスト) (ソース)
- nested-with-tall-padding-and-spanner-and-content.html (ライブテスト) (ソース)
- specified-height-with-just-spanner-and-oof.html (ライブテスト) (ソース)
- trailing-parent-padding-between-spanners.html (ライブテスト) (ソース)
- table-caption-change-descendant-display-type.html (ライブテスト) (ソース)
- table-caption-inline-block-remove-child.html (ライブテスト) (ソース)
- remove-block-beside-spanner-in-inline-crash.html (ライブテスト) (ソース)
- remove-inline-with-block-beside-spanners-crash.html (ライブテスト) (ソース)
- remove-spanner-beside-spanner-in-inline-crash.html (ライブテスト) (ソース)
- spanning-legend-000-crash.html (ライブテスト) (ソース)
- spanning-legend-001-crash.html (ライブテスト) (ソース)
- toggle-spanner-float-crash.html (ライブテスト) (ソース)
- abspos-after-spanner-static-pos.html (ライブテスト) (ソース)
- abspos-after-spanner.html (ライブテスト) (ソース)
- abspos-containing-block-outside-spanner.html (ライブテスト) (ソース)
- change-transform-in-spanner.html (ライブテスト) (ソース)
- nested-with-padding-and-spanner.html (ライブテスト) (ソース)
- orthogonal-writing-mode-spanner.html (ライブテスト) (ソース)
- remove-inline-with-block-beside-spanners.html (ライブテスト) (ソース)
- replaced-content-spanner-auto-width.html (ライブテスト) (ソース)
- spanner-in-child-after-parallel-flow-001.html (ライブテスト) (ソース)
- spanner-in-child-after-parallel-flow-002.html (ライブテスト) (ソース)
- spanner-in-child-after-parallel-flow-003.html (ライブテスト) (ソース)
- spanner-in-child-after-parallel-flow-004.html (ライブテスト) (ソース)
- spanner-in-opacity.html (ライブテスト) (ソース)
- going-out-of-flow-after-spanner.html (ライブテスト) (ソース)
- inline-with-spanner-in-overflowed-container-before-multicol-float.html (ライブテスト) (ソース)
- spanner-in-overflowed-clipped-container.html (ライブテスト) (ソース)
- spanner-in-overflowed-container-before-inline-content.html (ライブテスト) (ソース)
- spanner-inside-inline-in-overflowed-container.html (ライブテスト) (ソース)
- column-span-valid.html (ライブテスト) (ソース)
- column-span-computed.html (ライブテスト) (ソース)
- getclientrects-000.html (ライブテスト) (ソース)
- getclientrects-001.html (ライブテスト) (ソース)
7. カラムの充填
カラムを充填するための戦略は2つあります: カラムを均等に分配(バランス)するか、分配しないかです。 カラムを均等に分配する場合、ユーザーエージェントはカラムの高さのばらつきを最小限に抑えるよう努めるべきですが、 強制的な改行、widowsやorphansなど、 カラムの高さに影響する他のプロパティも尊重します。 カラムをバランスしない場合、順番に内容が入れられます; 一部のカラムは部分的にしか埋まらなかったり、全く内容が入らないこともあります。
7.1. カラムの均等分配:column-fillプロパティ
名前: | column-fill |
---|---|
値: | auto | balance | balance-all |
初期値: | balance |
適用対象: | multicolコンテナ |
継承: | no |
百分率: | 該当なし |
算出値: | 指定されたキーワード |
標準順序: | 文法通り |
アニメーション型: | 離散的 |
このプロパティは マルチカラム行の内容が 直前にスパンナーに続かない場合、 カラム間で均等に分配されるかどうかを指定します。
テスト
値は以下の通りです:
- balance
-
できる限りカラム間で均等に内容を分配します。
フラグメント化されたコンテキストでは、最後のフラグメントだけが均等に分配されます。
テスト
- multicol-fill-000.xht (ライブテスト) (ソース)
- multicol-fill-001.xht (ライブテスト) (ソース)
- column-fill-invalid.html (ライブテスト) (ソース)
- column-fill-valid.html (ライブテスト) (ソース)
- column-fill-computed.html (ライブテスト) (ソース)
- column-fill-balance-orthog-block-001.html (ライブテスト) (ソース)
- column-balancing-paged-001-print.html (ライブテスト) (ソース)
- multicol-fill-balance-001.xht (ライブテスト) (ソース)
- multicol-fill-balance-002.html (ライブテスト) (ソース)
- multicol-fill-balance-003.html (ライブテスト) (ソース)
- multicol-fill-balance-004.html (ライブテスト) (ソース)
- multicol-fill-balance-005.html (ライブテスト) (ソース)
- multicol-fill-balance-006.html (ライブテスト) (ソース)
- multicol-fill-balance-007.html (ライブテスト) (ソース)
- multicol-fill-balance-008.html (ライブテスト) (ソース)
- multicol-fill-balance-009.html (ライブテスト) (ソース)
- multicol-fill-balance-010.html (ライブテスト) (ソース)
- multicol-fill-balance-011.html (ライブテスト) (ソース)
- multicol-fill-balance-012.html (ライブテスト) (ソース)
- multicol-fill-balance-013.html (ライブテスト) (ソース)
- multicol-fill-balance-014.html (ライブテスト) (ソース)
- multicol-fill-balance-015.html (ライブテスト) (ソース)
- multicol-fill-balance-016.html (ライブテスト) (ソース)
- multicol-fill-balance-018.html (ライブテスト) (ソース)
- multicol-fill-balance-019.html (ライブテスト) (ソース)
- multicol-fill-balance-020.html (ライブテスト) (ソース)
- multicol-fill-balance-021.html (ライブテスト) (ソース)
- multicol-fill-balance-022.html (ライブテスト) (ソース)
- multicol-fill-balance-023.html (ライブテスト) (ソース)
- multicol-fill-balance-024.html (ライブテスト) (ソース)
- multicol-fill-balance-025.html (ライブテスト) (ソース)
- multicol-fill-balance-026.html (ライブテスト) (ソース)
- multicol-fill-balance-027.html (ライブテスト) (ソース)
- multicol-fill-balance-028.html (ライブテスト) (ソース)
- multicol-fill-balance-nested-000.html (ライブテスト) (ソース)
- balance-all
- できる限りカラム間で均等に内容を分配します。 フラグメント化されたコンテキストでは、すべてのフラグメントが均等に分配されます。
- auto
-
カラムを順番に埋めていきます
テスト
- multicol-fill-auto-001.xht (ライブテスト) (ソース)
- multicol-fill-auto-002.xht (ライブテスト) (ソース)
- multicol-fill-auto-003.xht (ライブテスト) (ソース)
- multicol-fill-auto-004.html (ライブテスト) (ソース)
- multicol-fill-auto-block-children-001.xht (ライブテスト) (ソース)
- multicol-fill-auto-block-children-002.xht (ライブテスト) (ソース)
- multicol-fill-auto-block-children-003.html (ライブテスト) (ソース)
- columnfill-auto-max-height-001.html (ライブテスト) (ソース)
- columnfill-auto-max-height-002.html (ライブテスト) (ソース)
- columnfill-auto-max-height-003.html (ライブテスト) (ソース)
連続的なコンテキストでは、オーバーフローカラムが存在する場合、このプロパティは効果を持ちません。
article{ width : 60 em ; height : auto; columns : 4 ; column-fill : balance; }
article{ width : 60 em ; height : 4 em ; columns : 4 ; column-fill : auto; }
その結果、すべての内容が最初のカラムに詰め込まれます:
article{ width : 60 em ; height : auto; columns : 4 ; column-fill : balance; } p{ break-after : column; }
最も短いカラムの高さは5行のテキストを含みます。 カラムの高さが決定された後、カラムは順番に埋められます。 その結果、3番目のカラムは最初の2つのカラムと同じ高さになり、 最後のカラムはかなり短くなります。
article{ width : 60 em ; height : auto; columns : 4 ; column-fill : balance; }
この例では、記事は分割できないfigureで始まり、そのfigureがカラムの高さを決定します。 以降の内容は残りのカラムに順番に埋められます:
テスト
カラムバランスとフロー外要素の組み合わせに関するテスト。
- column-balancing-with-span-and-oof-001.html (ライブテスト) (ソース)
- column-balancing-with-span-and-oof-002.html (ライブテスト) (ソース)
- forced-break-in-oof-in-column-balancing-nested.html (ライブテスト) (ソース)
- forced-break-in-oof-in-column-balancing.html (ライブテスト) (ソース)
その他のバランス調整に関するテスト
- balance-extremely-tall-monolithic-content-crash.html (ライブテスト) (ソース)
- column-balancing-with-overflow-auto-crash.html (ライブテスト) (ソース)
- balance-break-avoidance-000.html (ライブテスト) (ソース)
- balance-break-avoidance-001.html (ライブテスト) (ソース)
- balance-break-avoidance-002.html (ライブテスト) (ソース)
- balance-grid-container.html (ライブテスト) (ソース)
- balance-orphans-widows-000.html (ライブテスト) (ソース)
- balance-with-forced-break.html (ライブテスト) (ソース)
- balancing-flex-item-trailing-margin-freeze.html (ライブテスト) (ソース)
- balancing-tall-borders-freeze.html (ライブテスト) (ソース)
8. オーバーフロー
8.1. マルチカラムコンテナ内のオーバーフロー
カラム区切りを引き起こす場合を除き、 カラムボックスの外にはみ出したコンテンツは 目に見えてオーバーフローし、column boxにクリップされません。
注: カラム区切りについては§ 5 カラム区切り、 マルチカラムコンテナの内容ボックスにクリップされるかどうかは§ 8.2 マルチカラムコンテナ外のページ分割とオーバーフローを参照してください。
テスト
- multicol-block-no-clip-001.xht (ライブテスト) (ソース)
- multicol-block-no-clip-002.xht (ライブテスト) (ソース)
- multicol-clip-001.xht (ライブテスト) (ソース)
- multicol-clip-002.xht (ライブテスト) (ソース)
- multicol-clip-scrolled-content-001.html (ライブテスト) (ソース)
- multicol-overflow-clip-auto-sized.html (ライブテスト) (ソース)
- multicol-overflow-clip-positioned.html (ライブテスト) (ソース)
- multicol-overflow-clip.html (ライブテスト) (ソース)
- relative-child-overflowing-column-gap.html (ライブテスト) (ソース)
- relative-child-overflowing-container.html (ライブテスト) (ソース)
8.2. マルチカラムコンテナ外のページ分割とオーバーフロー
マルチカラムコンテナの端でカラムボックスの外にはみ出したコンテンツやカラム罫線は、overflowプロパティに従ってクリップされます。
マルチカラムコンテナは、次の理由で、表示可能な領域より多くのカラムを持つことがあります:
- カラムの高さを制限する宣言 (例:heightや max-heightの使用)。 この場合、追加のカラムボックスがインライン方向に作成されます
- ページのサイズ。 この場合、追加のカラムボックスは次のページへ移動します。
- 明示的なカラム区切り。 この場合、連続的コンテキストでは追加のカラムボックスがインライン方向に作成され、 フラグメント化メディアでは追加のカラムボックスが次のフラグメントへ移動します。
テスト
スクロール可能なコンテナが複数のカラムに分割されないことを確認するテストです。
- overflow-unsplittable-001.html (ライブテスト) (ソース)
- overflow-unsplittable-002.html (ライブテスト) (ソース)
- overflow-unsplittable-003.html (ライブテスト) (ソース)
連続的なコンテキストでマルチカラムコンテナの外側に現れるカラムは、オーバーフローカラムと呼ばれます。 オーバーフローカラムはマルチカラムコンテナの高さに影響を与えることがあります。
div{ max-height : 5 em ; overflow : visible; }
その結果、カラム数が増加します。
連続的なコンテキストでは、オーバーフローカラムがマルチカラムコンテナの高さに影響を与えることがあります。 この例では、オーバーフロー内に4行のテキストがあるカラムが現れます。 マルチカラムコンテナはこのカラムを収容できる高さとなっています。
カラムバランスがあると仮定すると、2ページ目には次のように表示されます:
p{ break-after : column; }
その結果、カラム数が増加し、余分なカラムがインライン方向に追加されます:
これは2ページ目に表示されます:
カラムバランスのため、最後の段落は3つのカラムに分割されます。
付録B. 変更点
この付録は参考情報です。
2021年10月12日版候補勧告(CR)からの変更点
- 「spanning要素とmulticol containerの間に固定位置子孫のための包含ブロックを確立する要素が何もない場合」という文言を追加。2022年3月9日解決
2021年2月12日版作業草案(WD)からの変更点
- 「マルチカラムコンテナのフロー外の子孫はカラムバランスやマルチカラムコンテナのblock-sizeに影響する」という文言を追加。2021年5月12日解決
- 「絶対配置アイテムだけで分離された2つのスパンナーのマージンも互いに折り重なる」という文言を追加。2021年5月12日解決
- アクセシビリティ考慮事項セクションを追加。APAからの要望
- 縦書きモードでのカラムレイアウトについて説明と例を追加。i18n WGからの要望
2019年10月15日版作業草案(WD)からの変更点
- 「spannerがspanner内の絶対配置ボックスの包含ブロックとなり、そうでない場合はmulticol containerまで包含ブロックが遡る」と追加。2020年10月23日解決
- 「multi-column lineが直前にspannerに続かない場合、カラム間で均等分配されるかどうかを指定する」という文言を追加。2020年4月29日解決
2018年5月28日版作業草案(WD)からの変更点
- 「しかし、下記の通り、widthとcolumn数を両方指定することはほとんど意味がない」という非規範的文言を削除。2019年9月16日編集、issue 4291参照。
- 「スパンナーはブロックレベルのボックスなので、隣接する2つのスパンナーのマージンは互いに折り重なる。カラムボックスは新しいブロックフォーマットコンテキストを確立するため、カラムボックス内の要素のマージンはスパンナーのマージンとは折り重ならない。」という段落を追加。2018年10月22日解決、issue 2582も参照。
- スパンナー要素がフロー外になり、強制区切りが残ることを仕様で明確化。段落を追加「スパンナー要素はフロー外となり、強制的な区切りが残る。これはスパンナーの描画順序には影響しない。」2019年2月28日解決。
- column-gapプロパティの定義を[CSS3-ALIGN]に移し、multicolでの詳細を追加:
「multi-columnフォーマットコンテキストでは、column-gapプロパティのnormalの使用値は1em。初期値を使った場合でもカラムが読みやすくなる。カラム間に罫線がある場合はgap中央に表示される。」2019年6月4日解決。 - The multi-column modelセクションを、issue 2203でのMorten Stenshorne氏の提案を元に書き直しました。
- column-gapのlength-percentage値からat-riskマーカーを削除。2019年6月4日解決。
- multicolの利点をテーブルレイアウトとの比較から、multicolの特性自体に言及するように導入文を編集。issue 3654参照。
- 2016年1月7日の決議後に擬似アルゴリズムセクションに追加された文章を、tracksではなくcolumnsに言及するよう修正。tracksはこの仕様内で定義されていないため。2019年3月13日解決。
- 仕様で使用するSVG画像の変更および明確化。
- 負の値/ゼロ値の制限について文法を括弧付き範囲表記に変更し、本文での説明と整合。
2017年10月5日版作業草案(WD)からの変更点
- ページメディアへの参照をフラグメント化コンテキストへの参照に変更。2018年4月12日解決。
column-fill
プロパティについての記述を変更:In continuous media, this property does not have any effect in overflow columns.
→In continuous media, this property does not have any effect when there are overflow columns.
2018年4月12日解決- オーバーフローカラムがコンテナの高さに影響を与えることを示す文と例を追加。2018年4月12日解決
- HTMLの例をSVGバージョンに置き換え、例の明瞭化。issue 1087。
- column-gapのnormal値をUA指定長ではなく1emに変更し、1emを推奨。2018年4月4日解決
- column-widthで負の値は不可、0は指定可能だが使用値は1px以上にクランプされると明記。2018年3月14日解決
- スパンナー要素が現れる直前のカラム行は自動的に全カラムで均等分配されることを明確化。2017年11月9日解決
- スパンナー要素が下位の子孫にもなり得ること、およびスパンナー要素を含む要素のマージン・ボーダー・パディングがスパンナーの上に描画されることを明確化する説明と例を追加。2017年11月8日解決
Column rules are painted in the inline content layer, but below all inline content inside the multicol element.
という文をColumn rules are painted just above the border of the multicol element. For scrollable multicol elements, note that while the border and background of the multicol element obviously aren’t scrolled, the rules need to scroll along with the columns.
に変更。2017年11月7日解決- 「マルチカラムを適用した要素」をmulti-column/multicol「element」からmulti-column/multicol「container」に参照を変更。2017年11月22日解決
- 「背の高い画像が次のページのカラムに移動した場合、その画像の元カラムが空になることがある。その場合でも罫線描画の判断上は内容ありとみなす」という例を削除。2017年9月7日解決
2011年4月12日版候補勧告(CR)からの変更点。
- 2016年7月の決議によりトラックサイズの下限をUA指定値とし、CSS Grid仕様と統一。2016年1月7日解決
- column-fillがオーバーフローカラムに効果がない旨の記述から「overflow columns only being in continuous media」という制限を削除。2013年9月解決
- balance-allキーワードとその例を追加し動作方法を明示。2013年9月解決
- 擬似アルゴリズムは度々改訂。最新2013年2月
- columns、column-width、column-countは「block container」に適用されると明記。2013年2月参照
- 区切りプロパティはこの仕様からCSS Fragmentation Moduleへ移動。
- column-fillはページ区切りの前に適用される旨を明記。2012年1月参照
- マージンの折り重なりやスパン要素の扱いについて例と解説を追加。2013年10月参照
- column-rule-widthがカラムのサイズや配置を変更しないことを明記。2013年9月参照
- 各スパン要素が個別のBFCを確立し、マージンが折り重なる旨を追加。2011年12月参照
- カラム罫線はインラインコンテンツ層で描画されるが、multicol内のインラインコンテンツより下に描画される。2013年2月参照
- column-spanは、multicolでなくても要素がフォーマットコンテキストを確立することがあると明確化。
- スパンナーは常にブロックのフォーマットコンテキストを確立するわけではない。
- column-gapが<length-percentage>を受け入れるように変更。<length>のみではなく。
- column-widthとcolumn-countはblock container(table wrapper boxを除く)に適用。
- カラムからオーバーフローした内容はクリップされません。
プライバシーに関する考慮事項
マルチカラムは新たなプライバシー漏洩を引き起こしません。
セキュリティに関する考慮事項
マルチカラムは新たなセキュリティ上の問題を引き起こしません。
アクセシビリティに関する考慮事項
コンテナの高さや行の長さの設定は、視覚障害や認知障害のある人々にとって課題となる場合があります。 WCAG成功基準1.4.10 Reflowや WCAG 1.4.8 視覚的提示を参照してユーザーのニーズを理解してください。
謝辞
この文書は過去の複数の提案やそのコメントに基づいています。 貢献者は以下の通りです:
Alex Mogilevsky、 Andy Clarke、 Anton Prowse、 Bert Bos、 Björn Höhrmann、 Cédric Savarese、 Chris Lilley、 Chris Wilson、 Daniel Glazman、 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