CSSグリッドレイアウトモジュール レベル3

W3C作業草案,

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2025/WD-css-grid-3-20251223/
最新発行バージョン:
https://www.w3.org/TR/css-grid-3/
編集者草案:
https://drafts.csswg.org/css-grid-3/
履歴:
https://www.w3.org/standards/history/css-grid-3/
フィードバック:
CSSWGイシューレポジトリ
仕様内インライン
編集者:
Tab Atkins Jr. (Google)
Elika J. Etemad / fantasai (Apple)
Jen Simmons (Apple)
Brandon Stewart (Apple)
元編集者:
(Mozilla)
この仕様の編集を提案:
GitHubエディター

概要

このモジュールは、CSS Gridコンテナのための一次元グリッドレイアウトモードを導入します。

CSSは、構造化文書(HTMLやXMLなど)をスクリーンや紙などにレンダリングする方法を記述する言語です。

この文書のステータス

このセクションは、公開時点でのこの文書のステータスを記述しています。 W3Cの現在の発行物一覧や、この技術レポートの最新版は W3C standards and drafts index.で確認できます。

この文書はCSSワーキンググループによって 作業草案として 勧告プロセスを使って公開されました。 作業草案としての公開は、W3Cやそのメンバーによる承認を意味するものではありません。

この文書は草案であり、今後随時更新・置換・廃止される可能性があります。 この文書は進行中の作業以外のものとして引用するのは適切ではありません。

フィードバックは、 GitHubでissueを提出(推奨) して送信してください。その際、タイトルに仕様コード “css-grid” を含めてください(例:“[css-grid] …コメントの要約…”)。 すべてのissueやコメントはアーカイブされます。 あるいは、(アーカイブされる)公開メーリングリスト www-style@w3.org に送ってもかまいません。

この文書は、 2025年8月18日版W3Cプロセス文書 に従って管理されています。

この文書は W3C特許ポリシー の下で運用されているグループによって作成されたものです。 W3Cは、グループの成果物に関して提出された 特許開示の一覧 を公開しています。 このページには特許の開示手続きについても説明があります。 ある特許が必須特許請求を 含むと信じる事実を知った個人は、W3C特許ポリシー第6節 に従って情報を開示しなければなりません。

1. はじめに

このセクションは規範的ではありません。

グリッドレイアウトは、CSSのレイアウトモデルで、 ボックスやその内容のサイズや配置を強力に制御する機能を持っています。 グリッドレイアウトは2次元レイアウトに最適化されています。 つまり、両軸でコンテンツの整列が求められる場合です。

グリッドレイアウトの例:
		     2行のアイテム、
		     1行目は4つのアイテム — 最後のアイテムは両方の行にまたがる、
		     2行目は2つのアイテム —
		     1つ目のアイテムは最初の2列をまたがる —
		     1行目のスパンしたアイテムも含む。
代表的なグリッドレイアウト例

従来のグリッドレイアウトでは多くのレイアウトが表現できますが、項目を両軸のグリッドに制限すると、Webでよく使われるいくつかのレイアウトが表現できなくなります。

このモジュールでは、その制限を取り除き、項目を一方の軸ではグリッド状のトラックに配置し、もう一方の軸では順番に積み重ねられるようにしたグリッドレイアウトのバリエーションを定義します。 特定のトラックに明示的に配置されなかった項目は、これまでに配置された項目のレイアウトサイズにもとづいて、残りスペースが最も多い列(または行)に配置されます。

1.1. 背景と動機

1.1.1. アイテムの自動配置によるウォーターフォールレイアウト

グリッドレーンレイアウトは、 “メイソンリーレイアウト”または“ウォーターフォールレイアウト”とも呼ばれることがあり、 多数のアイテム(一般的には画像や記事の要約など)を 一つずつ列に配置していく、組積造に緩やかに似たWebデザインパターンの一つです。 マルチカラムレイアウト複数行のカラムフレックスレイアウトのように、 内容がまず最初の列に縦方向に配置され必要に応じて2列め以降に溢れるのとは異なり、 自動配置されたグリッドレーンレイアウトでは、 各新しいアイテムごとにどの列に置くかが選ばれ、 それは通常より上部(後に置かれるアイテムより上)に近くなるように配置されます。

従来のPinterestの検索結果ページはこのレイアウトの好例です:
An example of grid lanes layout:
			          four columns of items,
			          each item is placed into the column with the smallest height so far.
代表的なグリッドレーンレイアウト例

ここでは、各アイテムの高さは異なり (内容や列幅によって異なります)、 DOMを検証すると (ビジュアル上は並び順が明示されていませんが) 各アイテムが、その時点で最も高さの低い列に配置されていることが分かります。

このレイアウトは一見マルチカラムレイアウトと似ていますが、 縦方向にスクロールすることで自然に“後ろ”のアイテム (検索結果の中で重要度が低いものなど)が表示されていくという利点があります。

従来のCSSレイアウトモデルでは、 各アイテムの高さを事前に知っているか、 JavaScriptによる計測又は配置を利用しない限りこのレイアウトは実現できません。

display: grid-lanesgrid-template-columnsを組み合わせることで この種のグリッドレーンレイアウトが実現できます。

1.1.2. 一次元のグリッドレイアウト

グリッドレイアウトは 二つの軸で強力なトラックサイズ指定や明示的配置が可能ですが、 レイアウトによっては一つの方向だけでアイテムの整列ができれば十分な場合もあります。

グリッドレーンレイアウトと 明示的配置アイテムの組み合わせによって この種の一次元グリッドレイアウトが実現できます。

Douglas Graham氏によるこのは 各アイテムを明示的に割り当てた列に配置していますが、 行は存在しません。 その代わり、各列内のアイテムは順番に積み重なります。 このレイアウトはグリッドレイアウトでは 再現できません。 なぜなら隣接する列間でアイテムの“またぎ”関係が固定でなく、 相対的な高さやバナー・広告項目の有無で動的に決まるからです。 またフレックスレイアウトでも再現できません。 なぜなら (読みやすさ・シーケンスナビゲーションや1カラムのモバイル表示に使われる)ソース並び順が 二つの列の間を行き来することになるからです。
In one-column layout:
			          the header, followed by an optional banner, the secondary navigation,
			          the main content area, an advertisement block, and finally the footer.
			          In two-column layout:
			          the header spanning both columns on top,
			          the footer spanning both columns at the bottom,
			          in the wider left column the optional banner followed by the main content area,
			          and in the narrow left column the secondary navigation followed by the advertisement block.
一次元レイアウトの1カラムと2カラムのバリエーション比較

1.2. 値の定義

この仕様はCSS2のプロパティ定義規約および[CSS2]に従っており、 値定義構文には[CSS-VALUES-3]を用います。 この仕様で定義されていない値型はCSS Values & Units [CSS-VALUES-3]で定義されています。 他のCSSモジュールとの併用により、これら値型の定義が拡張されることがあります。

各プロパティの定義欄に挙げた値のほか、 この仕様で定義された全プロパティは CSS全域キーワードも受け付けます。 読みやすさのため、省略して明示していません。

2. グリッドレーンレイアウトモデル

グリッドレーンレイアウトは、 グリッドレイアウトに似た形で 一つの軸(グリッド軸と呼ぶ)に アイテムをあらかじめ定めたトラックに配置し、 他方の軸ではフレックスレイアウトと同様に 自由に流します(積層軸と呼ぶ)。 グリッドレイアウトと同様で、フレックスレイアウトとは異なり、 グリッドレーンレイアウトの自動配置は 各トラックの長さをできるだけそろえるようアイテムを分配します。

グリッドアイテムブロック化も 通常のグリッドコンテナと全く同様です。

CSSの各プロパティも、特記なき限り 通常のグリッドコンテナと同様に機能します。 たとえばorderプロパティで レイアウト順序を指定できます。

注記: サブグリッドアイテムもサポートされていますが、 サブグリッド化はグリッド軸のみで発生します。 詳しくは§ 3.2 サブグリッドを参照してください。

グリッドレーンコンテナは、 グリッドコンテナで その内容がグリッドレーンレイアウトに従って配置されます。 グリッドレーンコンテナトラック積層軸ブロック軸の場合はカラムとして、 トラック積層軸インライン軸の場合は行として作成します。

グリッドレーンコンテナの比較
列レーン
grid-template-columns: 1fr 2fr 3fr;
Column grid lanes layout lays out items in columns,
					     but ordered across the columns,
					     placing each item in the then-shortest column.
行レーン
grid-template-rows: 1fr 2fr 3fr;
Row grid lanes layout lays out items in rows,
					     but ordered down across the rows,
					     placing each item in the then-shortest row.

2.1. 並べ替えとアクセシビリティ

グリッドレーンレイアウトは一般的には前方向に進行しますが (少なくとも一方の軸では次のアイテムが現在のアイテムの終端側に配置され、 自然な「読み順」に一致します)、 インライン軸やブロック軸のどちらの終端方向にも切り替わる場合があり、直感的でない順序になることもあります。 シンプルなケースでは、item-toleranceプロパティを使うことで、 自動配置アイテムのレイアウト時に積層軸でのわずかなサイズ差による逆戻り感を減らすことができます。 しかし、自動配置明示的配置やスパンアイテムが混在すると、 ある程度の逆戻りが発生することがあります。

例えば、次のマークアップ例では、 4番目のアイテムはスパン指定があり、1行目の残りの空列に収まりません。 結果として最初の列、つまりそれが収まる最も高い空きスペースに配置されます。 その後のスパン1のアイテムはいずれも「上側」の空き列に配置され、 自然な読み順が崩れます。
<section class=masonry>
  <div class=item>1</div>
  <div class=item>2</div>
  <div class="item tall">3</div>
  <div class="item wide">4</div>
  <div class=item>5</div>
  <div class=item>6</div>
  <div class=item>7</div>
</section>
<style>
.masonry {
  display: grid-lanes;
  grid-template-columns: repeat(5, auto);
}
.item { height: 50px; }
.item.wide { grid-column: span 3; }
.item.tall { height: 90px; }
</style>
In this example, the first row is items 1, 2, 3, 5, 6,
			          with item 3 slightly taller than the others.
			          Item 4 spans the first three columns, and is placed
			          just below item 3, while item 7 is tucked under item 5.
高さ・スパン指定が混在したアイテムを持つ、自動配置グリッドレーンレイアウト
このように、特定トラックへ明示的に配置されたアイテムが後方に隙間を残すと、 そこに後から自動配置されたアイテムが視覚的な順序を乱して配置される場合があります。

著者はこうした可能性を認識し、逆戻りを最小限に抑えるレイアウト設計を心がけるべきです。 それにより、フォーカスや読み順の追従がしやすくなります。 あるいは、アイテムに固有の順番がない場合は、 reading-flowプロパティを使い、 UAに読み・線形ナビゲーション順序を再構成させることもできます。

ここでは自動配置アイテムの順序変更をデフォルト挙動にすべきか?

逆戻りを減らすテクニック例:

グリッドレイアウトフレックスレイアウト と同様に、orderプロパティで アイテムの順序制御も可能です。 注意点も同様です。 詳しくは CSS Grid Layout 2 § 4 並べ替えとアクセシビリティや、 CSS Display 4 § 3.1 並べ替えとアクセシビリティを 参照してください。

2.2. グリッドレーンレイアウトの確立

Name: display
New values: grid-lanes | inline-grid-lanes
grid-lanes
この値は要素をブロックレベルグリッドレーンコンテナとして描画します。
inline-grid-lanes
この値は要素をインラインレベルグリッドレーンコンテナとして描画します。

グリッドレーンコンテナが そのグリッド軸サブグリッドでない場合は、内容に対して独立フォーマットコンテキストを確立します。

ISSUE(12820): グリッド/メイソンリーフォーマットコンテキストの正式な仕様化について記述する必要あり?

2.3. グリッドレーンのレイアウトの向き付け

グリッドレーンコンテナーの向き、すなわちそのグリッド軸インライン軸(列を確立する) か ブロック軸(行を確立する) かは、未定プロパティによって決まります。

このプロパティの初期値normal です。これは grid-template-*プロパティから向きを決定します:

次のコードは、下に伸長する2カラム(「ウォーターフォールスタイル」)のグリッドレーンコンテナー を作成します:
.container {
  display: grid-lanes;
  grid-template-columns: 100px 200px;
}

次のコードは、横に伸長する2行(「レンガ壁スタイル」)のグリッドレーンコンテナー を作成します:

.container {
  display: grid-lanes;
  grid-template-rows: 100px 200px;
}

ここでgrid-auto-flowを再利用するのか (およびその値が何を意味するのか) あるいはgrid-lanes-directionのような新しいプロパティを定義するのか決めること。[Issue #12803]

3. グリッドレーントラック仕様

グリッド軸においては、 グリッドレイアウトの持つトラック指定の全機能が利用できます。

ただし、 自動配置されたアイテムは、最終的に配置されるトラックだけでなく 全てのトラックのサイズ決定に寄与します。 § 3.4 グリッド軸トラックサイズ決定を参照してください。

注: これは、自動配置アイテムが 配置されると同時にレイアウトされる必要があり、 そのため各トラックがどれだけ「埋まっている」か(従って次の自動配置アイテムをどのトラックが受け取るべきか)が わかる必要があるためです。 よって、アイテムがレイアウト時に自身の利用可能な空間を把握できるよう、 トラックはすでに確定したサイズを持っていなければなりません。

3.1. グリッドレーントラックテンプレートの宣言:grid-template-*プロパティ

grid-template-*grid-auto-rows/grid-auto-columns プロパティ (およびそれらのショートハンド)は、グリッドレーンコンテナーグリッド軸 に適用され、 通常の グリッドコンテナー と同様にトラックを確立します。 (これらは スタッキング軸 では無視されます。)

3.1.1. 固有トラックとrepeat()

Level 3では、repeat()記法を拡張し、 最小トラックサイズ関数最大トラックサイズ関数確定値でない場合でも (つまり<auto-repeat>構文が以下のように緩和されます):

<auto-repeat> = repeat(  [ auto-fill | auto-fit ] , [ <line-names>? <track-size> ]+ <line-names>? )

繰り返し数を決定するために、 そうしたトラックの仮想サイズを算出します。 これは(CSS Grid Layout 2 § 12.4 トラックサイズ初期化)で初期化し、 (CSS Grid Layout 2 § 12.5 固有トラックサイズの解決)で固有サイズを解決します。 § 3.4 グリッド軸のトラックサイズ規定に従い、 次の仮定のもとで行います:

repeat()リストの各トラックの仮想サイズは、 そのインデックスごとに最大となるトラック値が採用されます。

例えば、 repeat(auto-fill, 50px auto auto) かつ最大スパン2の場合、 トラックリストを2回繰り返し、 50px auto auto 50px auto auto となります。 仮想レイアウト後、2番目・5番目のトラックは合成(最大化)して 1つめのautoのサイズとなり、 3番目・6番目は2つめのautoのサイズになります。 これらの具体サイズにより、コンテナに収まる繰り返し数を決定します。

これはグリッドレイアウトでも動作すべきか、それとも単一繰り返しにフォールバックすべきか? その場合どうする? [Issue #10915]

注記: この単純化したレイアウトヒューリスティクスは 「十分よい」かつ高速・一貫性のある定義を目的としています。 配置指定を無視しないとこの仕組みの整合性が保てません。 必要な繰り返し回数がわかる前に、 どのトラックにアイテムが入るか (たとえ明示的配置でも) 確定できないためです。

明示的配置が繰り返し範囲にかからない場合は 先に位置を確定できるため、上記アルゴリズムを調整すべき? つまり、auto repeat(auto-fill, ...) autoの例で、 1番目や-1番目に明示的配置した場合は そのトラックだけに影響を限定できそう(すべてのトラックに影響するものと仮定しなくてよい?)。

3.2. サブグリッド

サブグリッドは、入れ子のグリッドレーンコンテナー(およびグリッドコンテナー) がトラックサイズを共有できるようにします。 親の対応する軸がグリッド軸の場合、 サブグリッド化された軸は親コンテナーから グリッドコンテナー用に定義された通りに引き継がれます。 親の対応する軸がスタッキング軸の場合は、 サブグリッド化された軸もスタッキング軸として機能します。

レーンの向きと衝突する場合や両軸が積層になる場合は?

グリッドレーンレイアウトでは、 自動配置されたサブグリッドは 親グリッドからライン名を継承しません。 これはアイテムの配置がレイアウト結果に依存してしまうためです。 ただしサブグリッドのトラックは通常どおり親トラックと整列します。

こちらはサブグリッドのです:
<style>
.grid {
  display: inline-grid-lanes;
  grid-template-rows: auto auto 100px;
  align-content: center;
  height: 300px;
  border: 1px solid;
}

.grid > * {
  margin: 5px;
  background: silver;
}
.grid > :nth-child(2n) {
  background: pink;
}

.grid subgrid {
  display: grid;
  grid: subgrid / subgrid;
  grid-row: 2 / span 2;
  grid-gap: 30px;
}
.grid subgrid > * { background: cyan; }
</style>
<div class="grid">
  <item>1</item>
  <item>2</item>
  <item>3</item>
  <subgrid>
    <item style="height:100px">subgrid.1</item>
    <item>sub.2</item>
    <item>s.3</item>
  </subgrid>
  <item>4</item>
  <item>5</item>
  <item style="width: 80px">6</item>
  <item>7</item>
</div>
上記サブグリッド例の描画

サブグリッドの最初のアイテム(「subgrid.1」)が親グリッドの2行目の本来のサイズに寄与していることに注目してください。 これは、サブグリッドが明確な位置を指定したため、どのトラックに配置されるか分かるので可能です。 また、親のスタッキング軸をサブグリッド化しようとすると、 サブグリッドがグリッドレーンコンテナーに変換され、 そのインライン軸スタッキング軸となることにも注目してください。

サブグリッド でありグリッドレーンコンテナーでもあるものは、 グリッドレーン・サブグリッド と呼ぶことができます。

3.3. トラック反復:repeat()記法

この仕様ではrepeat()記法向けの新キーワードや grid-lanes専用挙動を導入します。

3.3.1. repeat(auto-fit)

グリッドレーンコンテナー(通常のグリッドコンテナーと同様に)では、 auto-fitauto-fillのように動作しますが、 空トラックは折りたたまれます。 ただし、配置はトラックサイズ決定の後に行われるため、 グリッドレーンコンテナーは トラックが占有されるかどうかを判定するためにヒューリスティックを用います。

このヒューリスティクスで埋まっていないと判定された auto-fit繰り返しの全トラックは “空”とみなされ折りたたまれます。 折りたたまれたグリッドトラックには 自動配置アイテムを配置できません。

注記: auto-fill利用時にアイテムが置けるトラックでも、 auto-fitだと 折りたたみが発生することがあります。 これはスパン>1の自動配置アイテムと明示配置が混在し、 自動配置アイテムが入るには小さすぎる隙間が生まれる場合です。

3.4. グリッド軸のトラックサイズ指定

トラックサイズ方法はCSS Grid同様ですが、 固有サイズ寄与を考慮する場合:

例えばグリッド軸に2列あるとして

この場合A, B, C, Dは1列めのサイズ決定に寄与し、2列目はA, B, Cのみが寄与(Dはしない)となります。

スパン付き自動グリッド位置アイテムについては、 あらゆる開始位置に配置されると想定し、その分だけ寄与します。

例えばグリッド軸に5列あり、 真ん中が固定100px、両端がautoの場合。 スパン2・固有サイズ220pxのアイテムは仮想的にコピーされ:

注: このアルゴリズムは、各トラックが最終的に配置されるすべてのアイテムを収容できる十分な大きさになることを保証し、かつ配置とトラックサイズ決定の間に依存サイクルが生じないようにします。ただし、サイズのばらつきによっては、トラックが必要以上に大きくなる場合があります。厳密なフィットが保証されるのは、すべてのアイテムがグリッド軸上に明示的に配置されている場合、またはすべてのアイテムのサイズが同じ場合(またはスパンアイテムの場合はそのサイズの整数倍が一致している場合)のみです。

3.4.1. サブグリッドアイテムの寄与

通常のグリッドコンテナー またはグリッドレーンコンテナーのトラックサイズを決定する際、 グリッドレーン・サブグリッド自動グリッド位置を持つアイテムについて特別な扱いを行います。

3.4.2. トラックサイズの最適化

下記のように同じスパン・配置を持つアイテムは 1つの仮想アイテムにまとめてトラックサイズ最適化できます:

  1. グリッドアイテム全体を、 次の属性でアイテムグループ分けする:

    注記: 例えばスパン2で2列目に配置したアイテムと スパン2で自動位置のアイテムは異なるグループです。

  2. アイテムグループごとに グループ内アイテムの固有サイズ寄与の最大値を持つ 仮想グリッドアイテムを合成する。

    ベースライン共有がある場合は、全アイテムを仮想グリッドトラックに配置して 共有ベースラインとshimを求め、 グループの固有サイズ寄与を拡張する。

  3. 仮想的な仮想グリッドアイテムのコピーを、それぞれが占める可能性のあるすべてのグリッド軸トラックに配置し、 それらのアイテムでトラックサイズ決定アルゴリズムを実行します。 得られたトラックサイズがグリッドレーンコンテナーのトラックサイズとなります。

注記: この最適化は前述の トラックサイズ規定と同じ結果となるべきです。 そうでなければ仕様バグです。CSSWGに報告してください。

4. グリッドレーンのアイテム配置

グリッド軸においては、 アイテムを明示的にトラックに配置したり、それらをまたいで配置したりすることが、 よく知られたgrid-placementプロパティの構文で可能です。 一方、自動配置は§ 4.4 グリッドレーンのレイアウトおよび配置アルゴリズムを用いて、 自動グリッド位置を持つ各アイテムを利用可能な「最も短い」トラックに配置します。

以下は、明示配置とスパン指定があるアイテムを使ったグリッドレーンレイアウト例です:
.container {
  grid-template-columns: repeat(3, auto);
}
.container > :nth-child(2) {
  /* 自動配置だがスパン指定有り */
  grid-column: span 2;
}
.container > :nth-child(3) {
  /* 手動配置 */
  grid-column: 3;
}
/* その他の子要素は自動配置 */
上記例のレンダリング。

4.1. グリッド軸アイテムの配置指定:grid-column-*grid-row-*プロパティ

grid-column-*grid-row-*プロパティ (およびそのショートハンド)は アイテムのグリッド軸に適用され、 通常のグリッドレイアウトと同様に配置を決定します。

4.2. 配置の許容範囲:item-tolerance プロパティ

名前: item-tolerance
値: normal | <length-percentage> | infinite
初期値: normal
適用対象: グリッドレーンコンテナー
継承: no
パーセンテージ: グリッド軸内容領域サイズを基準にするグリッドレーンコンテナー
算出値: 算出済み<length-percentage>
正規順序: 文法通り
アニメーション型: 長さとして扱う

グリッドレーンコンテナー は 各グリッドアイテムを 現在最も空いているグリッドトラックに配置して埋めていきます。 複数のトラックが最も空いている状態で並ぶ場合、 アイテムを順番に配置すると見た目が良くなります。 しかしトラックの高さがごくわずかに異なるだけの場合は、 高さの違いが意味あるほどには認識できず順に配置されないと 違和感のある見た目になります。

item-toleranceプロパティは 「同じ高さ」とみなすためのしきい値を指定し、 それによりトラックが順に埋まるようにします。

<length-percentage>

グリッドレーンコンテナー同点しきい値を指定します。 配置位置が最短位置から指定距離以内であれば、 それらは同じくらい良い(「同点」)とみなされます。

注: 初期値は「小さい」距離 (1em) であり、“ほとんど同じ”とみなすには適切だと思われます。

normal

使用値として グリッドレーンレイアウトでは1em、 他のレイアウトモードでは0となります。

infinite

無限大の同点しきい値を指定します。 この値により、トラックの長さを一切考慮せず、 アイテムは厳密に順番通りに配置されます。

注: この値では 連続するアイテムがスタッキング軸の中で 大きく異なる位置に配置される可能性があり、閲覧者が混乱する場合があります。 初期値(`1em`)が小さすぎると感じたら、`infinite`ではなく 10emや50vhなど、より大きな値を設定することを検討してください。

次の例では、 5番目のアイテムを配置する際、 4番目のカラムが最も短いですが、 1番目のカラムもほぼ同じ高さです。
四つの列があるグリッドレーン要素の例。各列は異なる高さまで部分的に埋まっており、4番目の列が最も短いが1番目の列もわずかしか高くない。許容値次第で次のアイテムは1番目か4番目のどちらにも配置され得る。

デフォルトの許容値1emだと 1番目と4番目のカラムは「同点」とみなされ、 そのため1番目が選ばれます。

代わりに許容値を0pxに設定した場合は 同点は発生せず、 4番目のカラムのみが配置先となります。

CSSWGはこのプロパティのより良い名前を歓迎しています。[Issue #10884]

注: 将来的にはこのプロパティをフレックスレイアウトにも適用する予定です。 その適用方法についての議論もご覧ください。

4.3. 密配置:denseキーワード

グリッドレイアウトにおいて、grid-auto-flow: denseグリッドアイテム配置アルゴリズム中に バックトラッキングを許可します。 同様にdenseキーワードは グリッドレーン配置アルゴリズム中に バックトラッキングを許可します。 ただし、グリッドレーンレイアウトでは アイテムの配置とサイズ決定が不可分なため、 アイテムは、そのスロットのトラック総使用サイズが 通常配置されるトラックの使用サイズと一致する場合にのみ、 互換性のある空きスロットへバックトラックできます。

注: この制約により、アイテムを複数回レイアウトすることを回避します。

4.4. グリッドレーンのレイアウト・配置アルゴリズム

グリッド軸の各トラックごとに、 ゼロで初期化された連続位置を保持します。 また、自動配置カーソルも管理し、 初期状態では最初のラインを指します。

各アイテムについて、順序修正済みドキュメント順序で処理します:

  1. アイテムが明示的なグリッド位置グリッド軸上に持つ場合、 その配置を使います。

    これもカーソルを更新すべき?

    そうでない場合は、以下のサブステップでグリッド軸配置を解決します:

    1. グリッド軸暗黙グリッド内の最初のラインから開始し、 もしこの位置に配置した場合そのアイテムがまたぐグリッド軸トラックの 連続位置の最大値を計算し、 これを max_pos と呼びます。
    2. アイテムがグリッド内に収まらなくなるまで、各連続するライン番号で上記手順を繰り返します。
    3. 最小の max_pos を得たラインと、その max_pos から同点しきい値以内の すべてのラインを possible lines とします。
    4. possible linesの中から自動配置カーソル以上の最初のラインを アイテムのグリッド軸上の位置とします。 なければ最初のものを選びます。
    5. 自動配置カーソルを アイテムの最終ラインを指すよう更新します。
  2. アイテムを、そのまたぐトラックの連続位置の最大値の位置に グリッド軸トラック上で配置します。
  3. アイテムの包含ブロックサイズを算出し、アイテムをレイアウトします。 また、またいだグリッド軸トラックの連続位置max_pos + 外側サイズ + grid-gap に設定します。

    このとき、ボックスの外側サイズは0未満にはなりません。

    注: ボックスの負のマージンが十分大きい場合でも、 ここで負のサイズとしてカウントされることはありません。 トラックの連続位置は決して減少せず、 負のサイズのボックスが 将来このトラックに通常サイズのアイテムを配置すると 以前のアイテムと重なることにはなりません。

  4. グリッドレーンコンテナーdenseパッキングを使用していて、 レイアウト内にスパンで空きができた(また伸びたアイテムなどで)箇所があり、 現在のサイズのままアイテムをそこに早く置いていれば入ったはずで、 そのときまたいだトラックの総使用サイズが 今いるトラックの使用サイズと同じ場合は、 そのうち最も上(高い)の空きに配置します。 同点しきい値以内に複数有効な空きがある場合は、 そのうち開始端に最も近い箇所に配置します。 このとき自動配置カーソル連続位置は、 このアイテムの配置前の値に巻き戻します。

    注: 実際に視覚的に空きに食い込むボックス (負マージンやposition: relative、transform等)は その空間のサイズには影響しません。 後のアイテムがそこに配置されて、 視覚的には重ねてしまう場合があります。

    注: denseパッキングでは埋め戻し時に 自動配置カーソルを無視し、 配置後も更新しません。 埋め戻す空きが存在しない場合は、 dense指定なし時と まったく同じ動作をします。

注: このアルゴリズムはアイテムができるだけ高く 配置されることになるトラックを選びます。 同点があれば、一番早いそのトラックで、 可能なら直前に配置したアイテムより後ろの位置(必ず前進)を選びます。

4.4.1. 包含ブロック

グリッドアイテムグリッドレーンレイアウトに参加する場合の包含ブロックは、グリッド軸におけるそのグリッド領域と、スタッキング軸におけるグリッドコンテナー内容領域によって構成されます。

4.4.2. 配置と書字モード

注: グリッドレイアウト全体と同様に、 グリッドレーンのレイアウトと配置も書字モードに敏感です。 たとえば、direction: rtlの場合、 インライン軸がグリッド軸でもスタッキング軸でも、 アイテムは右から左へ配置されます。

ここではとして、direction: rtlグリッド軸で使っています:
<style>
  .grid {
    display: inline-grid-lanes;
    direction: rtl;
    grid-template-columns: repeat(4, 2ch);
    border: 1px solid;
  }

  item { background: silver }
  item:nth-child(2n+1) {
    background: pink;
    height: 4em;
  }
  </style>
<div class="grid">
  <item>1</item>
  <item style="grid-column:span 2">2</item>
  <item>3</item>
  <item>4</item>
</div>
上記direction: rtl例のレンダリング。
こちらはで、 direction: rtl積層軸で用いています:
<style>
.grid {
  display: inline-grid-lanes;
  direction: rtl;
  width: 10ch;
  column-gap: 1ch;
  grid-template-rows: repeat(4, 2em);
  border: 1px solid;
}

item { background: silver }
item:nth-child(2n+1) {
  background: pink;
  width: 4ch;
}
</style>
<div class="grid">
  <item>1</item>
  <item style="grid-row:span 2">2</item>
  <item>3</item>
  <item>4</item>
</div>
上記direction: rtl例のレンダリング。

5. グリッドコンテナのサイズ指定

グリッドコンテナーのサイズ指定は通常のグリッドコンテナーと同様に動作しますが、スタッキング軸については次のように置き換えます。 グリッドコンテナースタッキング軸におけるmax-contentサイズmin-contentサイズ)は、 その軸でグリッドレーンコンテナーmax-content制約min-content制約)下でサイズ指定された時のスタッキング範囲の大きさです。 スタッキング範囲は、各トラックの最初のアイテム群の中で最も開始端側の外側端から、各トラックの最後のアイテム群の中で最も終了端側の外側端までの範囲です。

次はシンプルな例です:
<style>
.grid {
  display: inline-grid-lanes;
  grid-template-columns: 50px 100px auto;
  grid-gap: 10px;
  border: 1px solid;
}
item { background: silver; margin: 5px; }
</style>
<div class="grid">
  <item style="border:10px solid">1</item>
  <item>2</item>
  <item>3</item>
  <item style="height:50px">4</item>
  <item>5</item>
  <item>6</item>
</div>
上記グリッドコンテナーの本来のサイズ指定例の描画結果。

6. 整列とスペース

6.1. ガター: row-gapcolumn-gap、およびgapプロパティ

ガターは両軸で row-gapcolumn-gapプロパティ(およびgap略記)でサポートされます。 グリッド軸においては、通常のグリッドコンテナーと同じ働きをします。 CSS Grid Layout 2 §  11. 整列とスペースを参照してください。 スタッキング軸では、 隣接アイテム間のマージンボックスの間にgapが適用されます。 どちらの軸でもマージンは折りたたまれません。

6.2. グリッド軸の整列: align-content/justify-contentalign-self/justify-self、およびalign-items/justify-itemsプロパティ

グリッド軸では、 ボックス整列プロパティ は通常のグリッドコンテナーと同じように働きます。 CSS Grid Layout 2 §  11. 整列とスペースCSS Box Alignment Level 3を参照してください。

6.3. スタッキング軸の内容分布: align-content/justify-contentプロパティ

スタッキング軸においては、 content-distributionが 全体としての内容に適用され、ブロックコンテナ内での挙動と同様です。 より具体的には、整列対象スタッキング範囲となります。

整列対象の範囲は点線のボーダーで示されており、 整列コンテナーは全体のコンテナー (カラムの区切りの高さで示される)です。 デフォルトはstart-alignですが、 この例でalign-contentを変えることで、 アイテム全体が下方向(中央や端)へまとまって移動します。

注: これらのプロパティの整列対象スタッキング軸につき一つだけ存在します。 したがって、ユニークなalign-content / justify-content値は startcenterendベースライン整列 になります。 (normalstretch の挙動はstartと同じです。 分散整列値はフォールバック整列の挙動になります。) グリッドアイテムグリッドコンテナー内容領域に対して スタッキング軸方向に溢れる場合は、 スタッキング範囲グリッドコンテナー内容領域よりも大きくなります。

6.4. スタッキング軸の自己整列: align-self/justify-self および align-items/justify-itemsプロパティ

スタッキング軸においては、 自己整列プロパティは レイアウト内でギャップに隣接するアイテム、すなわち グリッドトラックの直前がスパンアイテム、または最後のアイテムのいずれかに配置されたものにのみ適用されます。 整列対象は アイテムのマージンボックスであり、 整列コンテナーはそのボックスと隣接するギャップを含みます。

ハイライトされた3つのアイテムだけが直後に「ギャップ」を持っているため、 align-itemsが 反応するのはこれらのみです。 それらの整列コンテナーは点線で示した範囲です。

この自己整列プロパティのスタッキング軸での動作定義は妥当でしょうか? [Issue #10275]

6.5. ベースライン整列

アイテムのベースライン整列グリッド軸トラック内では 通常のグリッドコンテナーと同様に機能し、 グリッドコンテナーのベースラインも その軸での通常のグリッドコンテナーと同様に決定されます。

ベースライン整列スタッキング軸ではサポートされていません。 この軸でのグリッドコンテナーの 最初のベースライン集合は、各トラックで最初に配置された整列ベースラインの中で最も高いものから生成され、 最後のベースライン集合は、各トラックの最後に配置された整列ベースラインの中で最も低いものから生成されます。

最初の行でベースライン整列をサポートすることもできます。そうすべきでしょうか?

7. フラグメンテーション

7.1. スタッキング軸でのフラグメンテーション

グリッド軸の各トラックは スタッキング軸で独立して分割されます。 グリッドアイテムが分割されたり、 直前・直後に強制改ページがあった場合、 そのアイテムがまたぐグリッド軸トラックの 連続位置フラグメンテナの大きさに設定され、 以降そのトラックにはアイテムが配置されなくなります。 アイテムが複数のフラグメントに分割された場合でも グリッド軸上での配置位置は全フラグメントで保持されます。 ただしグリッドアイテムが押し出された場合は、 次のグリッドコンテナーフラグメントで再度配置されます。 全てのアイテムが配置されるか新しいフラグメントに押し出されるまで配置処理は続きます。

でスタッキングをスタッキングとしてブロック軸にもつ グリッドレーンレイアウトの分割を示しています。 次のように表示されます:
ブロック軸グリッドレーンレイアウトにおける分割の可視化。

7.2. グリッド軸でのフラグメンテーション

グリッド軸グリッドレーンコンテナーにおいても フラグメンテーションがサポートされています。 この場合の分割動作は通常のグリッドコンテナーとよく似ていますが、 分割前に各アイテムがどのグリッド軸トラックへ配置されるかを決定するステップがあります。

で スタッキングをスタッキングとしてインライン軸にもつ グリッドレーンレイアウトの分割を示しています。 この場合、改ページはグリッド軸行間で起こります。 次のように表示されます:
ブロック軸での インライン軸グリッドレーンレイアウトにおける分割の可視化。

8. 絶対位置指定

グリッドに沿った絶対配置の子孫グリッドレーンコンテナーでも通常のグリッドコンテナー同様にサポートされます。 ただし、スタッキング軸には配置用のラインは(autoラインの他に)2本しか存在しません:

スタッキング軸における静的位置を定義してもよいかもしれません。 それはその時点のグリッド軸トラックの連続位置のmax(またはmin?)か、直前アイテムの末端でもよい?

9. グレースフルデグラデーション

一般的には、グリッドレーンの設計は グリッドレイアウトには対応するがグリッドレーンレイアウトに非対応なUAでもかなりうまく縮退すると期待できます。

でこれを説明します。

display: grid;
display: grid-lanes; /* grid lanes layout 非対応UAでは無視される */
grid-template-columns: 150px 100px 50px;

これで3カラムのレイアウトが作られますが、 UAがブロック軸グリッドレーンレイアウトに非対応な場合は「隙間」が多くなります。 grid lanes対応時の見た目を比較例とします:

grid lanes 対応UAでのこの例の描画。

付録A: 一般的なレイアウトアイテムフロー制御: item-*プロパティ

この節は別の仕様( [css-display-4] など)に移動する可能性があります。 これは複数のdisplay型に影響するためです。 またこの設計が妥当かも議論中です。

CSSの複数のレイアウトモードでは、 子要素を行や列で原子的な「アイテム」としてコンテナに並べ、 その順序や配置を制御できるようになっています。 item-*プロパティはこれらの順序・配置を汎用的に制御できる仕組みであり、 レイアウト固有のflex-flowgrid-auto-flowを内包します。

アイテムフロー制御の概要
フロー指向プロポーザル トラック指向プロポーザル 値の空間 説明 既存のflexプロパティ 既存のgridプロパティ
item-direction item-track auto | row | column | row-reverse | column-reverse 行・列にアイテムを配置するか、その中でstart-to-endかend-to-startかを制御します。 flex-direction grid-auto-flow
item-wrap item-cross [ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse row/columnプロパティで制御される軸の逆方向で折り返すかどうか・折り返し時の順序を制御します。 flex-wrap このレベルでgrid-auto-flowに追加
item-pack item-pack normal | dense || balance アイテムをトラックにどう詰めるかを制御します。 grid-auto-flow
item-tolerance item-tolerance normal | <length-percentage> | infinite 配置判定の際の“余裕量”(slack)をレイアウト固有に決めます。

これらのプロパティ名や構造はまだ検討中です。[Issue #11480]

アイテムフロー軸: item-track/item-direction

名前: item-direction, item-track
値: auto | row | column | row-reverse | column-reverse
初期値: auto
適用対象: フレックスコンテナー, グリッドコンテナー, グリッドレーンコンテナー
継承: no
パーセンテージ: N/A
算出値: 指定値通り
正規順序: 文法通り
アニメーション型: 離散値

このプロパティはアイテムを行または列に配置するか、およびその中でstart-to-endかend-to-startかを制御します。

このプロパティには未決論点が2つあります: a) 名前と b) 配置の主軸方向を指すのか・アイテムを入れるトラックの向きなのか つまりこのプロパティで定義される主軸配置主軸なのかトラック主軸なのか (フレックスレイアウトグリッドレイアウトでは一致し、 グリッドレーンレイアウトでは 配置方向がトラックの横断方向になる点だけ異なります)。 最新の議論参照。[Issue #11480]

auto

レイアウトモードによってrowまたはcolumnに算出されます:

row

トラック指向オプション 行(すなわちインライン軸と並行なトラック)に配置。 アイテムはstart-to-end順でその行に詰められます。

フロー指向オプション 行主軸のアイテム配置(すなわちインライン軸上に start-to-endで配置)。 フレックスレイアウトではflex row linesを、 グリッドレーンレイアウトではカラムグリッドトラックを生成します。

column

トラック指向オプション 列(ブロック軸と並行なトラック)に配置。 アイテムはstart-to-end順でその列を詰めます。

フロー指向オプション 列主軸のアイテム配置(ブロック軸上に start-to-endで配置)。 フレックスレイアウトではflex column linesを、 グリッドレーンレイアウトでは行グリッドトラックを生成します。

row-reverse

rowと同じですが、end-to-startで詰めます。

column-reverse

columnと同じですが、end-to-startで詰めます。

アイテム交差軸配置モード:item-cross/item-wrap

名前: item-wrap, item-cross
値: [ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse
初期値: auto
適用対象: フレックスコンテナー, グリッドコンテナー, グリッドレーンコンテナー
継承: no
パーセンテージ: N/A
算出値: 指定値通り
正規順序: 文法通り
アニメーション型: 離散値

主軸の逆方向の配置を制御します。

auto

nowrapフレックスコンテナーで、 他はwrapに算出されます。

nowrap

アイテムは常に配置主軸上に並び続けます(スペース切れでも)。 フレックスレイアウトでは単一行フレックスコンテナーグリッドレイアウトでは必要に応じ暗黙トラック配置主軸に作成します。

wrap

配置主軸でスペース切れになった時にアイテムが折り返します。 フレックスレイアウトでは複数行フレックスコンテナを作り、 グリッドレイアウトでは配置アルゴリズムが配置主軸上で明示トラックが尽きると 次の行もしくは列へ進みます。

normal

トラック主軸の逆方向にstart-to-end順で配置します。

フレックスレイアウトグリッドレイアウトでは 新しいトラック(flex lineやグリッドトラック)の追加方向を制御します。

グリッドレーンレイアウトでは、 トラック指向記法の時は高さ同点ならどのトラックを選ぶかフロー指向記法の時はそのトラックの中でどの方向に詰めるか を制御します。

reverse

トラック主軸の逆方向にend-to-start順で配置します。

wrap-reverse

wrap reverseに算出します。

注: この値は既存のflex-wrap値と整合性を持たせるため存在します。

このプロパティの意味や名称は item-direction/ item-trackにおける軸の定義に依存します。[Issue #11480]

アイテム詰め込みモード:item-packプロパティ

名前: item-pack
値: normal | dense || balance
初期値: normal
適用対象: フレックスコンテナー, グリッドコンテナー, グリッドレーンコンテナー
継承: no
パーセンテージ: N/A
算出値: 指定値通り
正規順序: 文法通り
アニメーション型: 離散値

このプロパティはアイテムを各トラック間でどう分布させるかをレイアウト固有に制御します。

normal

レイアウトモードのデフォルトのパッキング戦略を使います。

dense

先の空きを辿ってアイテムを戻し配置する(backtracking)ことを許します。 (先頭のアイテムがその空きには大きすぎたいわゆるskippingにより、空きができている場合があります。)

例えばフレックスレイアウトでは 前の行に空きがあればそこにアイテムを戻して配置できます。

balance

フレックスレイアウトでは 各行(最終行も含め)の内容量をバランスよくします( text-wrap-style: balanceのような動作)。

アイテム配置ショートハンド:item-flow略記プロパティ

名前: item-flow
値: <'item-direction'> || <'item-wrap'> || <'item-pack'> || <'item-tolerance'>
初期値: 個別プロパティ参照
適用対象: 個別プロパティ参照
継承: 個別プロパティ参照
パーセンテージ: 個別プロパティ参照
算出値: 個別プロパティ参照
アニメーション型: 個別プロパティ参照
正規順序: 文法通り

ショートハンドプロパティで 全てのitem-*個別プロパティ を1宣言でまとめて設定できます。

10. 謝辞

Cameron McCormack氏(メイソンリーレイアウト解説文書執筆、背景章より引用)、CSSWGへのプレゼンテーション、 Mats Palmgren氏(本仕様の最初のバージョン開発)に感謝します。 また、この機能の初期提案へのフィードバックをくださった皆様にも感謝します。

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

本仕様はレイアウト仕様であり、 CSSレイアウトが一般的にもたらすもの以外に新たなセキュリティ考慮事項はありません。

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

本仕様はレイアウト仕様であり、 CSSレイアウトが一般的にもたらすもの以外に新たなプライバシー考慮事項はありません。

変更点

レベル2以降の追加点

以下の機能が レベル2以降で追加されています:

最近の変更

2025年9月17日作業草案以降の主な変更点:

さらに過去の変更点は earlier changes も参照してください。

適合性

文書上の規約

適合性要件は記述的なアサーションと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つの適合クラスで定義されます:

スタイルシート
CSS スタイルシート
レンダラー
UA(スタイルシートの意味を解釈し、対応文書をレンダリングするもの)
オーサリングツール
UA(スタイルシートを作成するもの)

本仕様に適合するスタイルシートは、 本モジュールで定義された構文を使うすべての記述が、 汎用CSS構文および各機能の個別構文に従い有効である場合です。

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

本仕様に適合するオーサリングツールは、 本モジュールの汎用CSS構文および各機能の個別構文に従い構文的に正しいスタイルシートを書き、 本モジュールで述べるスタイルシートの他の適合要件も満たす場合です。

部分実装

著者がフォールバック値を割り当てられるよう、CSSレンダラーは 利用可能なレベルのサポートがないat-rules、プロパティ、値、キーワード、 その他構文は無効として(適宜無視)しなければなりません。 UAは特に、サポートされない値とサポートされる値が混在した複数値宣言のうち、 サポートされない値(=無効値)が含まれていれば 宣言全体を無視しなければなりません。

不安定・独自機能の実装

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

非実験的実装

仕様が候補勧告(CR)段階に達したら、 非実験的実装が可能となり、実装者は仕様通りに正しく実装できるCRレベル機能を プレフィックスなしでリリースすべきです。

CSSの相互運用性を確立・維持するため、CSSWGは、 非実験的CSSレンダラーが実装報告(必要ならそのテストケースも)をW3Cに提出するよう要請します。 W3Cへ提出されたテストケースはCSSWGによるレビュー・修正の対象となります。

テストケース・実装報告の提出方法については、CSSWGのウェブサイト https://www.w3.org/Style/CSS/Test/を参照してください。 質問はpublic-css-testsuite@w3.orgまで。

索引

本仕様で定義される用語

参照定義用語

参考文献

規範的参考文献

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSS ボックス整列モジュール レベル3.2025年3月11日.WD.URL: https://www.w3.org/TR/css-align-3/
[CSS-BOX-4]
Elika Etemad.CSS ボックスモデルモジュール レベル4.2024年8月4日.WD.URL: https://www.w3.org/TR/css-box-4/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad.CSS フラグメント化モジュール レベル4.2018年12月18日.FPWD.URL: https://www.w3.org/TR/css-break-4/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS カスケードおよび継承 レベル5.2022年1月13日.CR.URL: https://www.w3.org/TR/css-cascade-5/
[CSS-DISPLAY-4]
Elika Etemad; Tab Atkins Jr.. CSS 表示モジュール レベル4.2025年11月6日.WD.URL: https://www.w3.org/TR/css-display-4/
[CSS-FLEXBOX-1]
Elika Etemad; Tab Atkins Jr.; Rossen Atanassov.CSS フレキシブルボックスレイアウトモジュール レベル1.2025年10月14日.CRD.URL: https://www.w3.org/TR/css-flexbox-1/
[CSS-GAPS-1]
Kevin Babbitt.CSS ギャップ装飾モジュール レベル1.2025年4月17日.FPWD.URL: https://www.w3.org/TR/css-gaps-1/
[CSS-GRID-1]
Tab Atkins Jr.; 他.CSS グリッドレイアウトモジュール レベル1.2025年3月26日.CRD.URL: https://www.w3.org/TR/css-grid-1/
[CSS-GRID-2]
Tab Atkins Jr.; 他.CSS グリッドレイアウトモジュール レベル2.2025年3月26日.CRD.URL: https://www.w3.org/TR/css-grid-2/
[CSS-SIZING-3]
Tab Atkins Jr.; Elika Etemad.CSS ボックスサイズモジュール レベル3.2021年12月17日.WD.URL: https://www.w3.org/TR/css-sizing-3/
[CSS-TEXT-4]
Elika Etemad; 他.CSS テキストモジュール レベル4.2024年5月29日.WD.URL: https://www.w3.org/TR/css-text-4/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad.CSS 値と単位モジュール レベル3.2024年3月22日.CRD.URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad.CSS 値と単位モジュール レベル4.2024年3月12日.WD.URL: https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii.CSS 書字モード レベル4.2019年7月30日.CR.URL: https://www.w3.org/TR/css-writing-modes-4/
[CSS2]
Bert Bos; 他.カスケーディングスタイルシート レベル2 リビジョン1 (CSS 2.1) 仕様書.2011年6月7日.REC.URL: https://www.w3.org/TR/CSS2/
[RFC2119]
S. Bradner.RFCで要求レベルを示すためのキーワード.1997年3月.Best Current Practice.URL: https://datatracker.ietf.org/doc/html/rfc2119

参考情報

[CSS-MULTICOL-1]
Florian Rivoal; Rachel Andrew. CSS 多カラムレイアウトモジュール レベル1.2024年5月16日.CR.URL: https://www.w3.org/TR/css-multicol-1/
[CSS-POSITION-3]
Elika Etemad; Tab Atkins Jr.. CSS 配置レイアウトモジュール レベル3.2025年10月7日.WD.URL: https://www.w3.org/TR/css-position-3/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS 書字モード レベル3.2019年12月10日.REC.URL: https://www.w3.org/TR/css-writing-modes-3/

プロパティ一覧

名前 初期値 適用対象 継承 百分率 アニメーション型 標準順 算出値
item-cross [ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse auto フレックスコンテナ、グリッドコンテナ、グリッドレーンコンテナ いいえ 該当なし 離散 文法順 指定通り
item-direction auto | row | column | row-reverse | column-reverse auto フレックスコンテナ、グリッドコンテナ、グリッドレーンコンテナ いいえ 該当なし 離散 文法順 指定通り
item-flow <'item-direction'> || <'item-wrap'> || <'item-pack'> || <'item-tolerance'> 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 各個別プロパティ参照 文法順 各個別プロパティ参照
item-pack normal | dense || balance normal フレックスコンテナ、グリッドコンテナ、グリッドレーンコンテナ いいえ 該当なし 離散 文法順 指定通り
item-tolerance normal | <length-percentage> | infinite normal グリッドレーンコンテナ いいえ グリッド軸のコンテンツボックスサイズに対する割合(グリッドレーンコンテナ基準) 長さとして 文法順 算出された <length-percentage> 値
item-track auto | row | column | row-reverse | column-reverse auto フレックスコンテナ、グリッドコンテナ、グリッドレーンコンテナ いいえ 該当なし 離散 文法順 指定通り
item-wrap [ auto | nowrap | wrap ] || [ normal | reverse ] | wrap-reverse auto フレックスコンテナ、グリッドコンテナ、グリッドレーンコンテナ いいえ 該当なし 離散 文法順 指定通り

イシュー一覧

ここで自動配置アイテムのデフォルト挙動として並べ替えを有効にすべきでしょうか?
ISSUE(12820): グリッド/マソンリーフォーマッティングコンテキストがどのように形式的に機能するかを記述すべきか?
TBD
ここでgrid-auto-flowを再利用するか (およびその値が何を意味するのか) あるいはgrid-lanes-directionのような新しいプロパティを定義するか決めること。[Issue #12803]
これをGrid Layoutでも何らかの形で動作させるべきか、単一リピートにフォールバックさせるべきか?その場合、どうする? [Issue #10915]
厳密には、明示配置がリピートを跨がない場合、リピート解決前に配置位置が分かる。 アルゴリズムをこの点も考慮するよう修正するべきか? 例えばauto repeat(auto-fill, ...) auto使用時、1番または-1番線に明示的配置されたアイテムは そのトラックだけに影響を与えるべき(全部のトラックに入る仮定は不要)かもしれません。
これがレーンの向き指定と矛盾したり、両軸ともスタッキングになる場合はどうする?
CSSWGはこのプロパティのより良い名前を歓迎しています。[Issue #10884]
配置カーソルも更新すべき?
自己整列プロパティスタッキング軸上での動作仕様はこれで妥当か? [Issue #10275]
最初の行でベースライン整列をサポートすることもできます。そうすべきでしょうか?
スタッキング軸で静的位置を定義しても有用かもしれません。 その時点のgrid-axisトラックの連続位置 のmax(またはmin?)か、ひとつ前のアイテムの終端などで定める案も?
この節は別仕様( [css-display-4] など)へ移動の可能性あり。 これは複数のdisplay型へ影響し、妥当性も議論中です。
CSSWGはこれらのプロパティ名や統合方法を現在も検討中です。[Issue #11480]
このプロパティについては議論点が二つあります: a) 名称をどうするか b) 配置の主方向を指すか(placement axis)、アイテムを入れるトラックの向きを指すか(track axis)? つまり、このプロパティで定義される主軸配置主軸トラック主軸か。 これはフレックスレイアウトグリッドレイアウトでは一致し、 グリッドレーンレイアウトでは配置方向が横断になる点だけ異なります。 最新の議論参照。[Issue #11480]
このプロパティの解釈や命名はitem-direction/item-trackの軸解釈に依存します。[Issue #11480]