CSS マルチカラムレイアウトモジュール レベル 1

W3C 候補勧告スナップショット

この文書の詳細
このバージョン:
https://www.w3.org/TR/2024/CR-css-multicol-1-20240516/
最新公開バージョン:
https://www.w3.org/TR/css-multicol-1/
編集者ドラフト:
https://drafts.csswg.org/css-multicol/
履歴:
https://www.w3.org/standards/history/css-multicol-1/
実装報告:
https://test.csswg.org/harness/results/css-multicol-1_dev/grouped/
フィードバック:
CSSWG イシューレポジトリ
コメントの処理状況
編集者:
Florian Rivoal (Bloombergを代表して)
(Google)
以前の編集者:
(Opera Software)
この仕様への編集提案:
GitHub エディター
テストスイート:
https://wpt.fyi/results/css/css-multicol/

概要

この仕様書は、ウェブ用スタイルシート言語であるCSSにおけるマルチカラムレイアウトについて記述しています。仕様で定められた機能を利用すると、コンテンツを複数のカラムに分割し、それぞれの間に隙間や罫線を設けることができます。

CSSは、構造化文書(HTMLやXMLなど)の表示方法を画面や紙などで記述するための言語です。

この文書のステータス

このセクションでは、公開時点における本書のステータスについて説明します。 現在のW3C公開文書の一覧や、 本技術レポートの最新改訂版は、 W3C技術レポートインデックス https://www.w3.org/TR/ に掲載されています。

この文書は CSSワーキンググループ によって 候補勧告スナップショット として 勧告トラックを利用して公開されました。 候補勧告として公開されることは、W3Cおよびその会員による支持を意味しません。 候補勧告スナップショットは、広範なレビューを受けており、 実装経験の収集を目的としており、ワーキンググループメンバーが実装へのロイヤリティフリーライセンスを約束しています。 この文書はW3C勧告になることを意図しています。 追加のフィードバック収集のため、 まで候補勧告の状態が保たれます。

ご意見は GitHubでIssueを提出(推奨)してください。 その際、仕様コード「css-multicol」をタイトルに含めてください(例:“[css-multicol] …コメントの要約…”)。 すべてのIssueやコメントはアーカイブされています。 または、(アーカイブ済み) 公開メーリングリスト www-style@w3.org に送ることもできます。

この文書は 2023年11月3日版W3Cプロセス文書に準拠しています。

この文書は W3C特許ポリシーの下で運営されているグループによって作成されました。 W3Cは、グループの成果物に関連して提出された特許公開の公開リストを管理しています。 そのページには特許公開の手続方法も記載されています。 ある個人が、必須クレームを含むと信じる特許について実際に知っている場合は、 W3C特許ポリシー第6章に従って情報を公開しなければなりません。

1. はじめに

(このセクションは規定ではありません。)

このモジュールはCSSにおけるマルチカラムレイアウトについて説明します。 本書の機能を使用することで、 スタイルシートは要素の内容を複数のカラムにレイアウトすることを宣言できます。

CSSの他のレイアウト手法は、 親要素に適用すると、 直接の子の表示プロパティを変更します。 例えば、3カラムのグリッドレイアウトを作成した場合、 グリッドコンテナの直接の子は グリッドアイテムとなり、 カラムトラックに配置されます。 各セルに1つずつ要素が入り、必要に応じて追加の行が作成されます。

マルチカラムコンテナの子要素は通常のフローのままですが、 そのフローが複数のカラムに分割されて配置されます。 これらのカラムはインラインサイズが柔軟で、 利用可能なスペースに応じて 表示されるカラムのサイズや数が変化します。

マルチカラムレイアウトはCSSで簡単に記述できます。 以下はシンプルな例です:

body { column-width: 12em }

この例では、body要素の カラム幅が最低12emになるように設定されています。実際のカラム数は利用可能なスペースによって決まります。

カラム数はスタイルシートで明示的に設定することもできます:

body { column-count: 2 }

この場合、カラム数は固定され、 カラム幅は利用可能な幅によって変化します。

ショートハンドのcolumnsプロパティを使えば、 どちらか一方または両方のプロパティを1つの宣言で設定できます。

これらの例では、カラム数、カラム幅、 両方の数と幅の設定例です:
body { columns: 2 }
body { columns: 12em }
body { columns: 2 12em }

このモジュールで導入された別のプロパティ群は、 カラム間の隙間や罫線について説明します。

body {
  column-gap: 1em;
  column-rule: thin solid black;
}

上記の例の最初の宣言は、 隣接する2つのカラムの間隔を1emに設定します。 カラムギャップはパディング領域に似ています。 隙間の中央には罫線が入り、 これはcolumn-ruleプロパティで設定できます。

column-ruleプロパティの値はCSSのborderプロパティと 似ています。 borderと同様に、column-ruleはショートハンドプロパティです。

この例では、先ほどのcolumn-rule のショートハンド宣言を展開しています:
body {
  column-gap: 1em;
  column-rule-width: thin;
  column-rule-style: solid;
  column-rule-color: black;
}

column-fillcolumn-spanプロパティを使うことで、 マルチカラムレイアウトでさらに多様な表現が可能になります。

この例ではカラムをバランス良く配置し、 つまり長さがほぼ同じになるようにしています。 また、h2要素がすべてのカラムにまたがるように設定されています。
div { column-fill: balance }
h2 { column-span: all }
テスト

この仕様では、上記の例全てで使われている10個の新しいプロパティを導入しています。

すべてのカラムプロパティが初期値の場合、 要素のレイアウトは 1カラムだけのマルチカラムレイアウトと同じになります。

カラムギャップ(斜線ハッチング)やカラム罫線は、 このサンプルのマルチカラムコンテナのレンダリングで(クロスハッチングの)パディングとともに示されています。 ハッチングされた領域は説明用であり、 実装時にはこれらの領域は背景によって決まります。 2枚目の画像はマルチカラムコンテナのカラム罫線付きのレンダリング例です。
a diagram showing the various parts of multi-column layout key to the conventions used to display invisible parts of diagram
マルチカラムレイアウトの非表示のcolumn-spanやパディング部分が強調表示されています。
a diagram showing the various parts of multi-column layout
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が作成されないことを示すテスト。


マルチカラムプロパティは継承されません。


スクロール可能なカラムのマルチカラム。


高さゼロのマルチカラム。


従来のCSSボックスモデルでは、 要素の内容は対応する要素のコンテンツボックスに流し込まれます。 マルチカラムレイアウトは、フラグメンテーションコンテキストを導入し、匿名フラグメンテーションコンテナからなるカラムボックス(略してカラム)を形成します。 これらのカラムボックスは独立したブロックフォーマットコンテキストを確立し、マルチカラムコンテナの内容が流し込まれます。 また、非positionedな子要素の包含ブロックとなります。

この例では、画像の幅が次のルールで設定されています:
img {
  display: block;
  width: 100%;
}

カラムボックスが新しいブロックフォーマットコンテキストを作るため、 widthはカラムボックスを基準に計算されます。 したがって画像はカラムボックスからはみ出しません:

an image contained inside a column box
画像は表示されているカラムボックスによって制約されています。
カラムボックスが新しいブロックフォーマットコンテキストを作るため、マルチカラムコンテナの最初の子要素で設定されたtop marginはマルチカラムコンテナのマージンと折り畳まれません。
最初の段落に'margin-top: 1em'が設定されており、テキストの前に余白が現れています。
最初の段落上部のマージンは折り畳まれず、マルチカラムコンテナ内の最初の行の上に1emの余白が残っています。
テスト

マルチカラムレイアウト内に現れるfloatは、 floatが現れるカラムボックスを基準に配置されます。

この例では、画像の表示を次のCSSで記述しています:
img {
  display: block;
  float: right;
}

HTMLでは、画像は「the leg of a chicken」で文が終わった後に現れます。

カラムボックス内でfloatされた画像
画像は現れるカラムボックス内でfloatされています。

カラムボックス内で内容がブロック軸方向にフラグメントされてオーバーフローすると、次のカラムボックスへ続きます。

注: 匿名ボックスであるカラムボックスは、 包含ブロックにはなりません 絶対位置指定ボックスのための。 そのようなボックスの包含ブロックを確立するpositionプロパティは、 multicol containerprincipal box)に適用されます。

テスト
この例では、multi-column containerposition: relativeが設定されているため、包含ブロックとなります。 画像はmulti-column containerの直接の子であり、 position: absoluteが設定されています。 画像の位置はmulti-column containerを基準に決まり、 column boxを基準にはしません。
.container {
  position: relative;
  column-count: 3;
}
img {
  position: absolute;
  top: 20px;
  left: 40px}
絶対位置指定された画像は [=multi-column container=] を基準に配置されており、[=column box=] ではありません。
この図は、絶対位置指定された画像がcolumn boxではなくmulti-column containerを基準に配置されることを示しています。

multi-column containerのフロー外の子孫は、 カラムのバランス調整やmulti-column containerのblock-sizeに影響します。

テスト

カラムボックスは、multicol containerのインライン基準方向で並べられ、 multicol lineとして配置されます。 column widthはカラムボックスのインライン方向の長さです。 column heightはカラムボックスのブロック方向の長さです。 1行内のすべてのカラムボックスは同じcolumn widthを持ち、 1行内のすべてのカラムボックスは同じcolumn heightを持ちます。

テスト

以下のテストはカラム内容のベースライン揃えに関するもので、 これは本仕様書では定義されていません。


以下のテストは、multi-column containerでもあるリスト項目の挙動を確認します。


multi-col内のグリッド項目のテスト


以下のテストはtable要素の挙動を確認します。


以下のテストは描画順序が正しいことを確認します。


以下のテストは、マルチカラムプロパティのアニメーションや変形に関連しています。


特定の規定テキストに関連しない実装バグに関するテスト。


マルチカラムに関連する印刷およびページメディアに関するテスト。


注: 縦書きモードで設定されたテキストでは、ブロック方向は水平方向に進みます。 縦書きモードではカラムは水平方向に配置され、 ブロックの流れの方向は右から左、または左から右のいずれかになります。 column-widthプロパティはそのため、カラムのインラインサイズを指し、 実際の物理的な横幅を指すものではありません。

最初の画像は左から右(LTR)のインライン方向の横書きテキスト。二番目は右から左(RTL)のブロック流れの縦書きテキスト。三番目は左から右(LTR)のブロック流れの縦書きテキスト。
書字モードによってカラムの配置がどのように異なるかを示す図です。
左から順に: horizontal-tb, vertical-rl, vertical-lr。
テスト

縦書きモードに関するテスト。


マルチカラムコンテナ内の各multicol lineでは、 隣接するカラムボックスはカラムギャップで分離されており、 そのギャップにはカラム罫線が含まれる場合があります。 同じマルチカラムコンテナ内のすべてのカラムギャップは等しいです。 また、同じマルチカラムコンテナ内のすべてのカラム罫線も、表示されていれば等しくなります。 カラム罫線は両方のカラムに内容がある場合のみ表示されます。

最も単純な場合、multicolコンテナには1行のカラムしか含まれず、各カラムの高さはマルチカラムコンテナのコンテンツボックスの使用高さと同じになります。 しかし、フラグメンテーションスパンナーによって マルチカラムコンテナの内容が複数のmulticol lineに分割されることがあります。

マルチカラムコンテナがページ分割されている場合、各カラムの高さはページによって制約され、内容は次のページの新しいカラムボックスの行に続きます。カラムボックスがページをまたいで分割されることはありません。

同じ効果は、スパン要素がマルチカラムコンテナを分割する場合にも発生します。スパン要素の前のカラムはバランスよく短くなり、その内容に合わせて調整されます。スパン要素の後の内容は、新しいカラムボックスの行に流し込まれます。

スパン要素によって上部のカラムが短くなり、下部の新しいカラムでテキストが続く図
スパン要素がmulticolコンテナを分割する様子を示す図。

マルチカラムコンテナは、通常のブロックコンテナであり、 新しい独立したフォーマットコンテキストを確立します。 その内容は一連のmulticol lineとmulticolスパンナーから構成されます。 各multicol lineブロックレベルボックスとして機能し、 そのカラムボックスに対してマルチカラムフォーマットコンテキストを確立します。 また、スパンナーブロックレベルボックスとして機能し、 その型に応じた独立したフォーマットコンテキストを確立します(通常通りdisplay値による)。

マルチカラムコンテナのネストも可能ですが、実装依存の制限がある場合もあります。

テスト

注: カラムボックスにプロパティや値を設定することはできません。 例えば、特定のカラムボックスの背景を設定したり、カラムボックスにパディング・マージン・ボーダーの概念を持たせることはできません。 今後の仕様で追加機能が導入される可能性があります。 例えば、異なる幅や異なる背景色のカラムをサポートするようになるかもしれません。

注: カラム高さがビューポートより大きいmulticolコンテナはアクセシビリティ上の問題となる場合があります。 詳細はアクセシビリティに関する考慮事項をご覧ください。

3. カラム数とカラム幅

マルチカラムコンテンツをレイアウトする際、カラム数とカラム幅を決定することは基本です。 これらのプロパティでカラム数とカラム幅を設定します:

三つ目のプロパティcolumnsは、 column-widthcolumn-countの両方を設定するショートハンドプロパティです。

明示的なカラム改ページ、内容、高さ制約などの他の要素も、実際のカラム数やカラム幅に影響する場合があります。

3.1. カラムのインラインサイズ:column-widthプロパティ

名前: column-width
値: auto | <length [0,∞]>
初期値: auto
適用対象: ブロックコンテナ(ただしtable wrapper boxは除く)
継承: no
百分率: 該当なし
算出値: キーワードautoまたは絶対長さ
標準順序: 文法通り
アニメーション型: 算出値型による

このプロパティはmulticolコンテナのカラムの幅を記述します。

auto
他のプロパティ(例えばcolumn-countがauto以外の場合など)によってカラム幅が決定されることを意味します。
<length [0,∞]>
最適なカラム幅を記述します。 実際のカラム幅は、利用可能なスペースに応じてより広くなる場合があります。 また、指定されたカラム幅より少ないスペースしかない場合は、より狭くなることもあります。 負の値は許可されません。 使用値は最低1pxにクランプされます。
テスト
テスト
例えば、次のスタイルシートを考えてみましょう:
div {
  width: 100px;
  column-width: 45px;
  column-gap: 0;
  column-rule: none;
}

100px幅の要素の内部には、45px幅のカラムが2つ入る余地があります。 利用可能なスペースを埋めるために、 実際のカラム幅は50pxに増加します。

また、次のスタイルシートを考えてみましょう:
div {
  width: 40px;
  column-width: 45px;
  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-widthcolumn-countの両方がauto以外の場合、 整数値は最大カラム数を示します。
テスト
例:
body { column-count: 3 }

3.3. column-widthcolumn-countのショートハンド:columnsプロパティ

名前: columns
値: <'column-width'> || <'column-count'>
初期値: 各個別プロパティを参照
適用対象: 各個別プロパティを参照
継承: 各個別プロパティを参照
百分率: 各個別プロパティを参照
算出値: 各個別プロパティを参照
アニメーション型: 各個別プロパティを参照
標準順序: 文法通り

これはcolumn-widthcolumn-countを設定するためのショートハンドプロパティです。 省略された値は初期値になります。

columnsプロパティを使った有効な宣言例:
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 */
テスト

3.4. 疑似アルゴリズム

下記の疑似アルゴリズムは、column-count(N)とcolumn-width(W)の使用値を決定します。疑似アルゴリズムにはもう一つの変数があります:Uはマルチカラムコンテナの使用幅です。

注: マルチカラムコンテナの使用幅Uは要素の内容によって決まる場合があり、 その場合、column-countcolumn-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の使用値は明示的なカラム改ページや高さ制約を考慮せずに計算されますが、 実際の値はそれらも考慮されます。

テスト
この例では、明示的なカラム改ページのために実際のcolumn-countが使用値より多くなっています:
div {
  width: 40em;
  columns: 20em;
  column-gap: 0;
}

p {
  break-after: column;
}
<div>
  <p>one
  <p>two
  <p>three
</div>
Two columns drawn inside the container, one outside
計算されたcolumn-countはauto、使用値は2、実際のcolumn-countは3です。
実際のcolumn-countが使用値より少なくなることもあります。 この例を考えてみましょう:
div {
  width: 80em;
  height: 10em;
  columns: 20em;
  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コンテナの対向するコンテンツ端に位置します。 カラム罫線はスペースを占有しません。 つまり、カラム罫線の有無や太さによって他のものの配置が変わることはありません。 カラム罫線がギャップより太い場合、隣接するカラムボックスは罫線に重なり、 罫線がmulticolコンテナのボックス外にまで伸びることがあります。 カラム罫線はmulticolコンテナのボーダーのすぐ上に描画されます。 スクロール可能なmulticolコンテナの場合、 コンテナのボーダーや背景は当然スクロールしませんが、 罫線はカラムと一緒にスクロールする必要があります。 カラム罫線は、両方のカラムに内容がある場合のみ描画されます。

テスト

基本的なカラム罫線のテスト


カラム罫線がギャップよりも太い場合、隣接するボックスが重なります。


カラム罫線は、両方のカラムに内容がある場合のみ描画されます。


背景やカラム罫線の挙動に関するテスト。


4.1. カラム間のガター:column-gapプロパティ

column-gapプロパティは[CSS3-ALIGN]で定義されています。

マルチカラムフォーマットコンテキストにおいて、normalcolumn-gapプロパティの使用値となる場合、その値は1emです。 これにより初期値が使われてもカラムが読みやすく保たれます。 カラム間にカラム罫線がある場合、 罫線はギャップの中央に表示されます。

テスト

ギャップがアニメーション可能であることをテストします。


4.2. カラム罫線の色:column-rule-color プロパティ

名前: column-rule-color
値: <color>
初期値: currentcolor
適用対象: multicolコンテナ
継承: no
百分率: 該当なし
算出値: 算出された色
標準順序: 文法通り
アニメーション型: 算出値型による
<color>
カラム罫線の色を指定します。
テスト

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またはhiddenの場合は0
標準順序: 文法通り
アニメーション型: 算出値型による

このプロパティはカラム間の罫線の幅を設定します。 負の値は許可されません。

テスト

4.5. カラム罫線のショートハンド:column-ruleプロパティ

名前: column-rule
値: <'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>
初期値: 各個別プロパティを参照
適用対象: 各個別プロパティを参照
継承: 各個別プロパティを参照
百分率: 各個別プロパティを参照
算出値: 各個別プロパティを参照
アニメーション型: 各個別プロパティを参照
標準順序: 文法通り

このプロパティは、column-rule-widthcolumn-rule-stylecolumn-rule-colorをスタイルシート上で同時に設定するためのショートハンドです。 省略された値は初期値になります。

テスト
この例では、カラム罫線カラムギャップが同じ幅です。 そのため、両者はまったく同じスペースを占めます。
body {
  column-gap: 35px;
  column-rule-width: 35px;
  column-rule-style: solid;
  column-rule-color: black;
}
罫線がギャップを完全に覆う様子。
カラム罫線とカラムギャップが同じスペースを占めます。
テスト

5. カラム区切り

コンテンツが複数のカラムにレイアウトされる場合、 ユーザーエージェントはカラム区切りの位置を決定しなければなりません。 コンテンツをカラムに分割する問題は、ページに分割する問題と似ており、 これはCSS 2.1の13.3.3節[CSS21]で説明されています。

カラム区切りをページ区切りと同じプロパティで指定できるように、3つの新しいプロパティが導入されています:break-beforebreak-afterbreak-insideです。

5.1. 分割制御:break-beforebreak-afterbreak-insideプロパティ

break-beforebreak-afterbreak-inside[CSS3-BREAK]で定義されています。

テスト

6. カラムのまたぎ

column-spanプロパティを使うことで、要素を複数のカラムにまたがって配置することができます。

6.1. 要素をカラムにまたがらせる:column-spanプロパティ

名前: column-span
値: none | all
初期値: none
適用対象: フロー内のブロックレベル要素
継承: no
百分率: 該当なし
算出値: 指定されたキーワード
標準順序: 文法通り
アニメーション型: 離散的
テスト

このプロパティは要素がいくつのカラムにまたがるかを指定します。値は以下の通りです:

none
要素は複数のカラムにまたがりません。
テスト
all
要素はカラム区切りを強制し、フロー外となって、最も近いマルチカラム祖先のすべてのカラムにまたがります(同じブロックフォーマットコンテキスト内)。 通常フローの内容で要素より前に現れるものは、 直前のマルチカラム行内で自動的にすべてのカラムに均等に分配され、 要素の後のコンテンツは新しいマルチカラム行に流し込まれます。 この要素は独立したフォーマットコンテキストを確立します。

注: この要素が新しいフォーマットコンテキストを確立するかどうかは、要素がマルチカラムの子孫かどうかには依存しません。 column-spanallのときは必ず確立します。 これは、後でマルチカラムが削除された場合や、メディアクエリで特定状況下でマルチカラムが無効化された場合でも、デザインの堅牢性を高めるためです。

テスト

複数のカラムにまたがる要素は、マルチカラムスパン要素と呼ばれ、その要素が作成するボックスはマルチカラムスパンナーと呼ばれます。

スパンナー包含ブロックマルチカラムコンテナ自体です。 そのため、スパンナー自体が包含ブロックを確立しない場合、 スパンナー内の絶対位置指定ボックス包含ブロックチェーンは、マルチカラムコンテナまで直接スキップします(スパンナーマルチカラムコンテナの間の祖先はスキップされます)。

スパンナーはフロー外となりますが、 これはスパン要素の描画順序 [CSS21]には影響しません。

この例では、h2要素がサンプル文書の6番目の文の後(つまり "the leg of a" の後)に追加されています。 このスタイルが適用されます:
h2 { column-span: all; background: silver }

column-spanallを設定すると、 h2要素より前に現れるすべてのコンテンツがh2要素の上に表示されます。

要素が3つのカラムすべてにまたがる
h2要素が column-span: all に設定されています

スパンナーがマルチカラム行を分割するため、 カラム罫線も中断されることに注意してください(罫線はマルチカラム行内のカラム間のみ描画されます)。

スパン要素は、同じフォーマットコンテキストに属していて、 スパン要素とマルチカラムコンテナの間に固定位置子孫のための包含ブロックを確立するものがなければ、第一レベルの子孫より深い階層にあっても問題ありません。

この例では、column-span: allを持つ要素が、transform: rotate(90deg)を持つ要素の内側に入っています。 transformは固定位置子孫のための包含ブロックを確立するため、スパンナーは作成されません。
<article>
  <section>
    <div class="spanner">試みられたスパンナー</div>
  </section>
</article>
article {
  columns: 2;
}

section {
  transform: rotate(90deg);
}

.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: 2px solid red;
  margin-top: 65px;
  padding-top: 20px;
}

h2 {
  column-span: all;
  background: silver
}
要素が3つのカラムすべてにまたがり、sectionの赤いボーダーはスパンナーの前で切れる。
h2要素はcolumn-span: allに設定されており、 sectionには赤いボーダーと上側のパディング、マージンがあります
テスト

スパン要素は、通常よりも多くのスペースを占有します。 スペースが限られている場合、スパン要素のための空間を確保できないことがあります。 このような場合、ユーザーエージェントはこのプロパティにnoneが指定されたかのように扱うことがあります。

この例では、h2要素がコンテンツの後半に現れ、 マルチカラムコンテナの高さが制限されています。 そのため、h2要素はオーバーフロー内に現れ、 要素をスパンさせるための空間がありません。 結果として、この要素はcolumn-span: noneが指定されたかのように表示されます。
h2要素がオーバーフローカラムにある
h2要素はオーバーフローカラムにあり、column-span noneが指定されたかのように表示されます
この例は前の例に似ていますが、 H2要素が自然に最後のカラムに現れます。 それでも、要素をスパンさせるための空間が十分ではありません。
h2要素が最終カラムにある
h2要素は最終カラムにあり、column-span noneが指定されたかのように表示されます
テスト
フラグメント化されたコンテキストでは、スパン要素はすべてのフラグメントで尊重されます。 この例では、ページメディア環境で、 最初の3つの段落の後にカラム区切りがあります。 スパンするH2要素は4番目の段落の後に現れます。
各カラムに2行のテキストがある3カラム
これは1ページ目に表示されます
3カラムすべてにまたがるスパン要素、上下にテキスト
これは2ページ目に表示されます

スパンナーはブロックレベルのボックスなので、 2つの隣接するスパンナーのマージンは互いに折り重なります(collapse)。 絶対配置されたアイテムだけで分離された2つのスパンナーのマージンも折り重なります。 絶対配置アイテムはカラムボックスを作成しないためです。 カラムボックスは新しいブロックフォーマットコンテキストを確立するため、 カラムボックス内の要素のマージンはスパンナーのマージンとは折り重なりません。

テスト
スパンナーは新しいフォーマットコンテキストを確立しますが、そのマージンは周囲の状況によって変化します。 この例では、2つのスパンナーが自然にページの先頭に並びます。 最初のスパンナーの上部マージンは、強制されない区切りと隣接しているため短縮されます。 2つのスパンナー間のマージンは互いに折り重なります。 しかし、2番目のスパンナーの下部マージンは、次の要素の上部マージンとは折り重なりません。
h2 {
  margin: 16px 0;
  column-span: all;
  background: silver
}
p { margin-top: 16px }
改ページ後に並ぶ2つのスパン要素
2つのスパン要素間ではマージンが折り重なりますが、スパンナーの下部と次要素の上部マージンは折り重なりません。
テスト

スパンナー関連の追加テスト。


7. カラムの充填

カラムを充填するための戦略は2つあります: カラムを均等に分配(バランス)するか、分配しないかです。 カラムを均等に分配する場合、ユーザーエージェントはカラムの高さのばらつきを最小限に抑えるよう努めるべきですが、 強制的な改行、widowsorphansなど、 カラムの高さに影響する他のプロパティも尊重します。 カラムをバランスしない場合、順番に内容が入れられます; 一部のカラムは部分的にしか埋まらなかったり、全く内容が入らないこともあります。

7.1. カラムの均等分配:column-fillプロパティ

名前: column-fill
値: auto | balance | balance-all
初期値: balance
適用対象: multicolコンテナ
継承: no
百分率: 該当なし
算出値: 指定されたキーワード
標準順序: 文法通り
アニメーション型: 離散的

このプロパティは マルチカラム行の内容が 直前にスパンナーに続かない場合、 カラム間で均等に分配されるかどうかを指定します。

テスト

値は以下の通りです:

balance
できる限りカラム間で均等に内容を分配します。 フラグメント化されたコンテキストでは、最後のフラグメントだけが均等に分配されます。
テスト
balance-all
できる限りカラム間で均等に内容を分配します。 フラグメント化されたコンテキストでは、すべてのフラグメントが均等に分配されます。
auto
カラムを順番に埋めていきます
テスト

連続的なコンテキストでは、オーバーフローカラムが存在する場合、このプロパティは効果を持ちません。

この例では、記事には短い段落が1つだけあり、3行に収まります。 カラムバランスのため、3行は別々のカラムに表示されます。
article {
  width: 60em;
  height: auto;
  columns: 4;
  column-fill: balance;
}
4つのカラム、最初の3つに内容がある。
カラムバランスにより、3行が3つのカラムに表示されます。
この例ではカラムバランスがオフになっており、記事には高さが指定されています:
article {
  width: 60em;
  height: 4em;
  columns: 4;
  column-fill: auto;
}

その結果、すべての内容が最初のカラムに詰め込まれます:

4つのカラム、最初のカラムだけ内容がある。
バランスしないので、テキスト全体が1つの段落として表示されます。
この例では、記事に2つの段落があります: 最初は長文、次は短めです。 以下のコードが適用されます:
article {
  width: 60em;
  height: auto;
  columns: 4;
  column-fill: balance;
}

p {
  break-after: column;
}

最も短いカラムの高さは5行のテキストを含みます。 カラムの高さが決定された後、カラムは順番に埋められます。 その結果、3番目のカラムは最初の2つのカラムと同じ高さになり、 最後のカラムはかなり短くなります。

4つのカラム、すべてに内容がある。
カラムの高さが確定した後、カラムは順番に埋められます。
article {
  width: 60em;
  height: auto;
  columns: 4;
  column-fill: balance;
}

この例では、記事は分割できないfigureで始まり、そのfigureがカラムの高さを決定します。 以降の内容は残りのカラムに順番に埋められます:

カラム1に画像、2と3に内容。
カラムの高さはfigureによって決まります。
テスト

カラムバランスとフロー外要素の組み合わせに関するテスト。


その他のバランス調整に関するテスト


8. オーバーフロー

8.1. マルチカラムコンテナ内のオーバーフロー

カラム区切りを引き起こす場合を除き、 カラムボックスの外にはみ出したコンテンツは 目に見えてオーバーフローし、column boxにクリップされません。

注: カラム区切りについては§ 5 カラム区切り、 マルチカラムコンテナの内容ボックスにクリップされるかどうかは§ 8.2 マルチカラムコンテナ外のページ分割とオーバーフローを参照してください。

この例では、画像がカラムよりも幅広です:
最初のカラムの画像がはみ出して表示されている
コンテンツが目に見えてオーバーフローし、カラムボックスにクリップされません。
テスト

8.2. マルチカラムコンテナ外のページ分割とオーバーフロー

マルチカラムコンテナの端でカラムボックスの外にはみ出したコンテンツやカラム罫線は、overflowプロパティに従ってクリップされます。

マルチカラムコンテナは、次の理由で、表示可能な領域より多くのカラムを持つことがあります:

テスト

スクロール可能なコンテナが複数のカラムに分割されないことを確認するテストです。


連続的なコンテキストでマルチカラムコンテナの外側に現れるカラムは、オーバーフローカラムと呼ばれます。 オーバーフローカラムはマルチカラムコンテナの高さに影響を与えることがあります。

この例では、マルチカラムコンテナの高さが最大値に制限されています。 また、スタイルシートではオーバーフローした内容が表示されるように指定されています:
div {
  max-height: 5em;
  overflow: visible;
}

その結果、カラム数が増加します。

4つのカラム、1つがマルチカラムコンテナの外にある
オーバーフローカラムがインライン方向に作成されます。

連続的なコンテキストでは、オーバーフローカラムがマルチカラムコンテナの高さに影響を与えることがあります。 この例では、オーバーフロー内に4行のテキストがあるカラムが現れます。 マルチカラムコンテナはこのカラムを収容できる高さとなっています。

4つのカラム、オーバーフローカラムが他の3つより高い
最後のカラムはオーバーフローカラムですが、他のカラムよりも高くなっています。 コンテナはこのカラムに合わせた高さです。
フラグメント化されたコンテキストでは、オーバーフローした内容は次のフラグメントのカラムへ移動します。 例31と同じ内容と、ページボックスが整形済みテキスト5行分しかスペースがない場合、 これは1ページ目に表示されます:
3つのカラム
最初の3つの段落が1ページ目に表示されます。

カラムバランスがあると仮定すると、2ページ目には次のように表示されます:

3つのカラム
オーバーフローカラムが2ページ目に移動します。
この例では、段落の後に明示的なカラム区切りが生成されます:
p {
  break-after: column;
}

その結果、カラム数が増加し、余分なカラムがインライン方向に追加されます:

4つのカラム、1つがマルチカラムコンテナの外にある
オーバーフローカラムがインライン方向に作成されます。
ページメディアでは、 余分なカラムは次のページに表示されます。 前の例と同じコードの場合、 最後の段落は2ページ目に表示されます。 これは1ページ目に表示されます:
3つのカラム
最初の3つの段落が1ページ目に表示されます。

これは2ページ目に表示されます:

3つのカラム
オーバーフローカラムが2ページ目に移動します。

カラムバランスのため、最後の段落は3つのカラムに分割されます。

付録B. 変更点

この付録は参考情報です。

2021年10月12日版候補勧告(CR)からの変更点

2021年2月12日版作業草案(WD)からの変更点

2019年10月15日版作業草案(WD)からの変更点

2018年5月28日版作業草案(WD)からの変更点

2017年10月5日版作業草案(WD)からの変更点

2011年4月12日版候補勧告(CR)からの変更点。

プライバシーに関する考慮事項

マルチカラムは新たなプライバシー漏洩を引き起こしません。

セキュリティに関する考慮事項

マルチカラムは新たなセキュリティ上の問題を引き起こしません。

アクセシビリティに関する考慮事項

コンテナの高さや行の長さの設定は、視覚障害や認知障害のある人々にとって課題となる場合があります。 WCAG成功基準1.4.10 ReflowWCAG 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

適合性

文書の規約

適合性要件は、記述的な主張とRFC 2119の用語の組み合わせで表現されています。規範的な部分で使われる “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL” というキーワードはRFC 2119の定義通りに解釈されます。 ただし、可読性のため、この仕様書ではこれらの単語はすべて大文字ではありません。

この仕様書のすべての文章は規範的ですが、明示的に非規範的と記載されたセクション、例、およびノートは除きます。[RFC2119]

この仕様書の例は “for example” という言葉で導入されるか、class="example" のように規範的な文から区別して示されます:

これは参考例の一例です。

参考ノートは “Note” という語から始まり、class="note" によって規範的な文から区別されます:

Note、これは参考ノートです。

助言は規範的なセクションであり、特別な注意を促すスタイルになっていて、<strong class="advisement"> によって他の規範的な文章と区別されます。例えば次のようになります: UAはアクセシブルな代替手段を提供しなければなりません。

テスト

この仕様書の内容に関するテストは、このような “Tests” ブロックで記載されることがあります。 このようなブロックは非規範的です。


適合クラス

この仕様書への適合性は、3つの適合クラスで定義されます:

style sheet
CSSスタイルシート
renderer
UA(ユーザーエージェント)は、スタイルシートの意味を解釈し、それを利用した文書をレンダリングします。
authoring tool
UA(ユーザーエージェント)は、スタイルシートを作成します。

スタイルシートがこの仕様書に適合していると見なされるには、 このモジュールで定義された構文を使うすべての文が、汎用CSS文法およびこのモジュールで定義される各機能の個別文法に従って有効である必要があります。

レンダラーがこの仕様書に適合していると見なされるには、 適切な仕様に従ってスタイルシートを解釈することに加え、 この仕様書で定義されたすべての機能を正しくパースし、文書をそれに従ってレンダリングする必要があります。ただし、UAがデバイスの制限によって文書を正しくレンダリングできない場合でも、それは非適合とはなりません。(例:UAがモノクロモニターで色をレンダリングする必要はありません。)

オーサリングツールがこの仕様書に適合していると見なされるには、 スタイルシートを汎用CSS文法およびこのモジュールで定義される各機能の個別文法に従って正しく作成し、 このモジュールで説明されるスタイルシートのその他の適合要件もすべて満たす必要があります。

部分的な実装

著者が前方互換性のあるパース規則を利用してフォールバック値を指定できるように、 CSSレンダラーは、サポートできるレベルがない at-ルール、プロパティ、プロパティ値、キーワード、そのほかの構文要素を無効として(そして適切に無視)扱わなければなりません。特に、ユーザーエージェントは複数値プロパティ宣言においてサポートされない値だけを選択的に無視して、サポートされる値だけを適用してはなりません。どれか1つでも値が無効(=サポート外)とみなされた場合、CSSでは宣言全体を無視しなければなりません。

不安定および独自機能の実装

将来の安定したCSSの機能との衝突を避けるため、 CSSWGはベストプラクティスに従って、不安定機能や独自拡張の実装を推奨します。

非実験的な実装

仕様書が候補勧告段階(CR)に達すると、 非実験的な実装が可能となり、実装者は仕様に従って正しく実装できていることを示せるCRレベルの機能については、ベンダープレフィックスなしの実装をリリースするべきです。

CSSの相互運用性を確立・維持するために、CSSワーキンググループは、非実験的なCSSレンダラーが、 ベンダープレフィックスなしの実装をリリースする前に、実装レポート(必要に応じてそのテストケースも)をW3Cに提出することを求めています。W3Cに提出されたテストケースはCSSワーキンググループによるレビューや修正の対象となります。

テストケースや実装レポートの提出に関する詳細は、CSSワーキンググループのWebサイト https://www.w3.org/Style/CSS/Test/ で確認できます。 質問は public-css-testsuite@w3.org メーリングリストまでお寄せください。

CR終了基準

この仕様書が提案勧告(PR)へ進むためには、 各機能について少なくとも2つの独立した相互運用可能な実装が必要です。各機能は異なる製品によって実装されてもよく、すべての機能が1つの製品で実装される必要はありません。この基準のため、以下の用語を定義します:

independent
各実装は異なる組織によって開発され、他の適格な実装で使われているコードの流用・再利用・派生をしてはなりません。この仕様の実装に関係しないコード部分はこの要件から除外されます。
interoperable
公式CSSテストスイートの該当テストケースに合格すること、またはWebブラウザでない場合は同等のテストに合格すること。テストスイートのすべての該当テストには、もしそのUA(ユーザーエージェント)で相互運用性を主張するなら、同等のテストが作成されるべきです。またその場合、同じ方法でその同等テストに合格する追加のUAが必要です。ピアレビューのために同等テストは公開されなければなりません。
implementation
ユーザーエージェント(UA)は次を満たす必要があります:
  1. 仕様書を実装していること。
  2. 一般に公開されていること。製品版でも、ベータ版・プレビュー版・「ナイトリービルド」など公開されているバージョンでもかまいません。 非製品版の場合は、安定性を示すために少なくとも1ヶ月間その機能を実装していなければなりません。
  3. 実験的でないこと(=テストスイートに合格するためだけに特別に設計されたバージョンでなく、今後も通常利用が想定されていること)。

この仕様書は少なくとも6ヶ月間、候補勧告(CR)として維持されます。

索引

この仕様書で定義されている用語

参照によって定義された用語

参考文献

規範的参考文献

[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2024年3月11日. CR. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 4. 2018年12月18日. WD. URL: https://www.w3.org/TR/css-break-4/
[CSS-COLOR-5]
Chris Lilley; 他. CSS Color Module Level 5. 2024年2月29日. WD. URL: https://www.w3.org/TR/css-color-5/
[CSS-DISPLAY-3]
Elika Etemad; Tab Atkins Jr.. CSS Display Module Level 3. 2023年3月30日. CR. URL: https://www.w3.org/TR/css-display-3/
[CSS-GRID-2]
Tab Atkins Jr.; Elika Etemad; Rossen Atanassov. CSS Grid Layout Module Level 2. 2020年12月18日. CR. URL: https://www.w3.org/TR/css-grid-2/
[CSS-OVERFLOW-3]
Elika Etemad; Florian Rivoal. CSS Overflow Module Level 3. 2023年3月29日. WD. URL: https://www.w3.org/TR/css-overflow-3/
[CSS-POSITION-3]
Elika Etemad; Tab Atkins Jr.. CSS Positioned Layout Module Level 3. 2023年4月3日. WD. URL: https://www.w3.org/TR/css-position-3/
[CSS-TABLES-3]
François Remy; Greg Whitworth; David Baron. CSS Table Module Level 3. 2019年7月27日. WD. URL: https://www.w3.org/TR/css-tables-3/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2024年3月22日. CR. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2024年3月12日. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 4. 2019年7月30日. CR. URL: https://www.w3.org/TR/css-writing-modes-4/
[CSS21]
Bert Bos; 他. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS21/
[CSS3-ALIGN]
Elika Etemad; Tab Atkins Jr.. CSS Box Alignment Module Level 3. 2023年2月17日. WD. URL: https://www.w3.org/TR/css-align-3/
[CSS3-BREAK]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 3. 2018年12月4日. CR. URL: https://www.w3.org/TR/css-break-3/
[CSS3-SIZING]
Tab Atkins Jr.; Elika Etemad. CSS Box Sizing Module Level 3. 2021年12月17日. WD. URL: https://www.w3.org/TR/css-sizing-3/
[MEDIAQUERIES-5]
Dean Jackson; 他. Media Queries Level 5. 2021年12月18日. WD. URL: https://www.w3.org/TR/mediaqueries-5/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997年3月. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119

参考情報

[CSS-TRANSFORMS-1]
Simon Fraser; 他. CSS Transforms Module Level 1. 2019年2月14日. CR. URL: https://www.w3.org/TR/css-transforms-1/
[CSS3BOX]
Elika Etemad. CSS Box Model Module Level 3. 2024年4月11日. REC. URL: https://www.w3.org/TR/css-box-3/

プロパティ索引

名前 初期値 適用対象 継承 百分率 アニメーション型 標準順序 算出値
column-count auto | <integer [1,∞]> auto table wrapper box を除く block container no N/A 算出値による 文法通り 指定値
column-fill auto | balance | balance-all balance multicol container no N/A 離散的 文法通り 指定キーワード
column-rule <'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'> 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法通り 各個別プロパティ参照
column-rule-color <color> currentcolor multicol container no N/A 算出値型による 文法通り 算出された色
column-rule-style <line-style> none multicol container no N/A 離散的 文法通り 指定キーワード
column-rule-width <line-width> medium multicol container no N/A 算出値型による 文法通り 境界幅としてスナップされた絶対長; column-rule-style が none または hidden の場合は 0
column-span none | all none in-flow の block-level 要素 no N/A 離散的 文法通り 指定キーワード
column-width auto | <length [0,∞]> auto table wrapper box を除く block container no N/A 算出値型による 文法通り auto キーワードまたは絶対長
columns <'column-width'> || <'column-count'> 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法通り 各個別プロパティ参照