CSSボックスアラインメントモジュール レベル3

W3C作業草案,

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2025/WD-css-align-3-20250311/
最新公開バージョン:
https://www.w3.org/TR/css-align-3/
編集者草案:
https://drafts.csswg.org/css-align/
履歴:
https://www.w3.org/standards/history/css-align-3/
フィードバック:
CSSWG課題リポジトリ
仕様内インライン
編集者:
Elika J. Etemad / fantasai (Apple)
Tab Atkins Jr. (Google)
この仕様への編集提案:
GitHub エディター

概要

このモジュールは、様々なCSSボックスレイアウトモデル(ブロックレイアウト、テーブルレイアウト、フレックスレイアウト、グリッドレイアウト)における、ボックスをそのコンテナー内で整列する機能を含みます。(テキストおよびインラインレベルの内容の整列については、[CSS-TEXT-3]および[CSS-INLINE-3]で定義されています。)

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

この文書の位置付け

このセクションは、本書が公開された時点での状態を説明します。 現在のW3C公開文書一覧や、この技術報告書の最新版は、W3C技術報告書インデックス(https://www.w3.org/TR/)で確認できます。

本書は、CSS作業グループによって、作業草案として勧告トラックを用いて公開されました。 作業草案として公開されていても、W3Cおよびそのメンバーによる支持を意味するものではありません。

この文書はドラフトであり、随時更新、置換、または他の文書によって廃止される可能性があります。 進行中の作業以外としてこの文書を引用することは適切ではありません。

フィードバックはGitHubで課題を登録(推奨)し、タイトルに仕様コード「css-align」を含めてください(例:「[css-align] …コメント概要…」)。 すべての課題とコメントはアーカイブされます。 または、アーカイブされる公開メーリングリストwww-style@w3.orgに送信することもできます。

本書は2023年11月3日版W3Cプロセス文書に従って管理されています。

この文書は、W3C特許ポリシーの下で運営されるグループによって作成されました。 W3Cは、グループの成果物に関連して行われた特許開示の公開リストを管理しています。 そのページには特許開示の方法も記載されています。 個人が特許について実際に知っていて、その特許が必須請求項を含むと考える場合は、W3C特許ポリシー第6節に従って情報を開示する必要があります。

以下の機能はリスクありとされており、CR期間中に削除される可能性があります:

「リスクあり(at-risk)」はW3Cプロセス用語であり、機能が削除や遅延の危険があることを必ずしも意味しません。WGはこの機能の相互運用可能な実装が時宜にかなって困難になる可能性があると考えており、そうすることで、提案勧告段階に移行する際に必要であれば新しい候補勧告を公開することなく機能を除外できます。

1. はじめに

CSSレベル1と2では、text-alignによるテキストの整列や、autoマージンのバランスによるブロックの整列が可能でした。 しかし、テーブルセル以外では垂直方向の整列はできませんでした。 CSSがさらなる機能を追加するにつれ、 ボックスを様々な次元で整列させる能力がより重要になってきます。 このモジュールは、CSS全体で共有される一貫した共通のボックス整列モデルを作成しようとしています。

注: テキストやインラインレベルの内容の整列は [CSS-TEXT-3]および[CSS-INLINE-3]で定義されています。

注: 本仕様は、ここで定義されるプロパティが初期値に設定されている場合、 CSS2.1で定義された動作を変更することを意図していません。 実装者やその他の方が何らかの不一致に気付いた場合は、 CSSWGにエラーとして報告してください。

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

1.1. モジュール間の相互作用

このモジュールは、[CSS2]第9章および第10章で説明されているブロックレイアウトモデルに、 新しい整列機能を追加し、過剰制約されたブロックレベルボックスのマージンの解決方法を再定義し、 そしてこれらの新しい整列プロパティが、vertical-alignを用いたテーブルセル内容の整列とどのように相互作用するかを定義します。 ([CSS2] 第17章で定義)

これらのプロパティが グリッドレイアウト[CSS-GRID-1]やフレキシブルボックスレイアウト[CSS-FLEXBOX-1]とどのように相互作用するかは、それぞれのモジュールで定義されています。 ここでのプロパティ定義は[CSS-FLEXBOX-1](より小さく、早期の許容値のサブセットを持つ)での定義を上書きします。

このモジュールのプロパティは、::first-line::first-letter擬似要素には適用されません。

1.2. 値の定義

この仕様は、CSSプロパティ定義規約[CSS2])に従い、 値定義構文[CSS-VALUES-3])を使用しています。 この仕様で定義されていない値型はCSS値と単位[CSS-VALUES-3]で定義されています。 他のCSSモジュールとの組み合わせによって、これらの値型の定義が拡張される場合があります。

各プロパティの定義で挙げられているプロパティ固有の値に加え、 この仕様で定義されたすべてのプロパティは CSS全域キーワードもプロパティ値として受け付けます。 可読性のため明示的には繰り返していません。

1.3. 部分的な実装

このモジュールの機能のサポートは、 影響を受ける様々なレイアウトモデルに対応する段階で展開されると予想されるため、 部分的な実装のルール(サポートされていない機能を無効として扱うことを要求)が、 実装が一般的にプロパティをサポートするレイアウトモデル内で対象となるすべてのレイアウトモジュールでサポートされていない整列キーワードにも適用されることをここに明確にします。

例えば、 ある実装がalign-self[CSS-GRID-1][CSS-FLEXBOX-1]でサポートしている場合、 startはグリッドとフレックス両方のコンテナーでサポートされていない限り無効として扱わなければなりません。 ただし、その同じ実装がブロックレベル要素に対してalign-selfを全くサポートしていない場合は、 align-self: startの未実装はこの要件の対象にはなりません。

2. 整列プロパティの概要

ボックス整列プロパティはCSSの6つのプロパティのセットで、 ボックスの中で他のボックスを整列させる制御をします。 これらは2つの軸で説明できます:

注: この仕様では「justify」と「align」の用語を使い、 それぞれメイン/インライン軸と交差/ブロック軸の整列を区別しています。 この選択はやや任意ですが、2つの用語を持つことで CSSのすべてのレイアウトモデル(CSS Flexbox 1 § 2 フレックスレイアウトボックスモデルと用語を含む)で一貫した命名規則を提供できます。

次の表はボックス整列プロパティと、それらが適用可能なdisplay型をまとめたものです。

共通 整列対象 適用先
justify-content メイン/インライン 要素内の内容 (実質的にpaddingを調整) ブロックコンテナーフレックスコンテナーグリッドコンテナー
align-content 交差/ブロック
justify-self インライン 親内の要素 (実質的にmarginを調整) ブロックレベルボックス、絶対配置ボックス、グリッドアイテム
align-self 交差/ブロック 絶対配置ボックス、フレックスアイテムグリッドアイテム
justify-items インライン ボックス内のアイテム (子アイテムのjustify-self: autoを制御) ブロックコンテナーグリッドコンテナー
align-items 交差/ブロック フレックスコンテナーグリッドコンテナー

注: *-itemsプロパティは要素自体には影響しません。 コンテナーに設定した場合、 そのコンテナーの子要素に*-self: autoが使われている場合の解釈方法を指定します。

3. 整列用語集

このモジュールはCSSの全レイアウトモードに対して整列プロパティを定義するため、 抽象的な用語をいくつか導入します:

整列対象
整列対象は、そのプロパティによって整列されるものです。 justify-selfalign-selfの場合、 整列対象はそのプロパティが設定されているボックスのマージンボックスであり、 そのボックスの書字モードを引き継ぎます。 justify-contentalign-contentの場合、 整列対象はレイアウトモードで定義され、内容の一部を指します。 それもまたプロパティが設定されたボックスの書字モードを引き継ぎます。
整列コンテナー
整列コンテナーは、整列対象がその中で整列される矩形領域です。 これはレイアウトモードで定義されますが、 通常は整列対象のcontaining blockであり、 containing blockを確立するボックスの書字モードを引き継ぎます。
フォールバック整列
一部の整列は特定の状況でのみ満たされるか、消費できるスペースに制限があります。 例えば、space-betweenは複数の整列対象がある場合のみ機能し、 ベースライン整列は満たされた後も余剰スペースを吸収しきれない場合があります。 このような場合、フォールバック整列が発動し (下記で定義) 余剰スペースを完全に消費します。

4. 整列キーワード

すべての整列プロパティは共通のキーワード値セットを使用し、 それらはこのセクションで定義されます。 キーワードは3つのカテゴリに分かれます:

位置整列
これらのキーワードは、整列コンテナー内の絶対位置として整列を定義します。
ベースライン整列
これらのキーワードは、複数の整列対象のベースライン同士の関係として整列を定義します(整列コンテキスト内)。
分布整列
これらのキーワードは、整列対象間のスペースの分布として整列を定義します。

4.1. 位置整列:centerstartendself-startself-endflex-startflex-endleftright キーワード

位置整列キーワードは、整列対象をその整列コンテナーに対してどこに位置付けるか指定します。

値の意味は以下の通りです:

center (self, content)
整列対象整列コンテナーの中央に配置します。
start (self, content)
整列対象を、該当軸における整列コンテナーの開始端に揃えます。
end (self, content)
整列対象を、該当軸における整列コンテナーの終了端に揃えます。
self-start (self)
整列対象を、該当軸の整列コンテナーの、整列対象の開始側に対応する端に揃えます。
self-end (self)
整列対象を、該当軸の整列コンテナーの、整列対象の終了側に対応する端に揃えます。
flex-start (self, content)
フレックスレイアウトのみで使用。 [CSS-FLEXBOX-1] 整列対象を、整列コンテナーの、フレックスコンテナーのmain-startまたはcross-start側に揃えます。

フレックスフォーマッティングコンテキスト以外で使う場合、この値はstartとして動作します。 つまり、フレックスアイテムでないボックス(または フレックスアイテムであるかのように振る舞う場合、例えば絶対配置ボックスの静的位置の決定時など)では、 自己整列プロパティで使用するとstartとして動作し、 フレックスコンテナーでないボックスでは 内容分布プロパティで使用するとstartとして動作します。

flex-end (self, content)
フレックスレイアウトのみで使用。 整列対象を、整列コンテナーの、フレックスコンテナーのmain-endまたはcross-end側に揃えます。

フレックスフォーマッティングコンテキスト以外で使う場合、この値はendとして動作します。 つまり、フレックスアイテムでないボックス(または フレックスアイテムであるかのように振る舞う場合、例えば絶対配置ボックスの静的位置の決定時など)では、 自己整列プロパティで使用するとendとして動作し、 フレックスコンテナーでないボックスでは 内容分布プロパティで使用するとendとして動作します。

left (justify-*のみ)
整列対象を、 整列コンテナーline-leftまたは物理的left端に揃えます(該当軸に応じて)。

プロパティの軸がleft↔right軸と平行でない場合、この値はstartとして動作します。現在、プロパティ軸がleft↔right軸と平行でない唯一のケースはカラムフレックスボックスです。

right (justify-*のみ)
整列対象を、 整列コンテナーline-rightまたは物理的right端に揃えます(該当軸に応じて)。

プロパティの軸がleft↔right軸と平行でない場合、この値はstartとして動作します。現在、プロパティ軸がleft↔right軸と平行でない唯一のケースはカラムフレックスボックスです。

これらの値の特定のサブセットを示すために、2つの文法用語が使われます:

<self-position>
このセットはjustify-selfalign-selfでボックスを整列コンテナー内に揃える際に使い、justify-itemsalign-itemsでも(justify-selfalign-selfの初期値指定用)使います。
<self-position> = center | start | end | self-start | self-end |
        flex-start | flex-end
<content-position>
このセットはjustify-contentalign-contentでボックス内の内容を揃える際に使います。
<content-position> = center | start | end | flex-start | flex-end

注: leftrightは、<self-position><content-position>のセットには含まれませんが、位置整列値としてjustify-content/justify-self/justify-itemsでは有効です。 これはalign-*プロパティには許可されていないためで、justify-*プロパティの文法に明示的に含まれています。

多くのレイアウトモデル(ブロック、テーブル、グリッドなど)では、 justify-*プロパティは常にインライン軸で整列し、 align-*プロパティは常にブロック軸で整列します。

一方、Flexboxではjustify-*メイン軸で、align-*交差軸で整列します。 これはflex-direction値によって変わります。 flex-directionrowrow-reverseの場合は他のレイアウトモードと同じ (インライン軸justify-*ブロック軸align-*)、 flex-directioncolumncolumn-reverseの場合は逆対応になります。

「start」と「end」が直交フローに対して二軸であることをより分かりやすく説明する必要があります。

4.2. ベースライン整列:baselineキーワード とfirst/last 修飾子

CSS Writing Modes 3 § 4.1 ベースラインの概要を参照。

ベースライン整列は、 複数の整列対象を、共通整列コンテキスト (例:行内のセルなど)内で それぞれの整列ベースラインを揃えて配置する位置整列の一種です。 整列対象の位置がベースライン共有グループ内で ベースライン整列だけでは完全に制約されない場合(つまりベースラインを保ったまま各自の整列コンテナー内で移動可能な場合)、 可能な限りベースライン整列を保ちつつフォールバック整列が適用されます。

ベースライン整列キーワードは<baseline-position> という文法で表されます:

<baseline-position> = [ first | last ]? && baseline

firstlast の値は、ボックスにベースライン整列の優先度("first" か "last")を与えます。デフォルトは "first" です。

それぞれの値の意味:

baseline
下記で定義されるfirst baselineに算出されます。
first baseline
first-baseline整列に参加することを指定します。 ボックスの整列ベースラインfirst baseline setを、 ベースライン共有グループの対応するベースラインと揃えます。 詳細は§ 9.3 ボックスのベースライン整列を参照。

フォールバック整列は、 first baselineの場合、 safe self-start自己整列の場合)、 safe start内容分布の場合)です。

last baseline
last-baseline整列に参加することを指定します。 ボックスの整列ベースラインlast baseline setを、 ベースライン共有グループの対応するベースラインと揃えます。 詳細は§ 9.3 ボックスのベースライン整列を参照。

フォールバック整列は、 last baselineの場合、 safe self-end自己整列の場合)、 safe end内容分布の場合)です。

align-contentプロパティで指定された場合、 これらの値はベースライン内容整列を起動し、 ボックス内の内容がコンテンツボックス内で移動され、 ボックス自体のサイズにも影響する場合があります。 詳しくは§ 5.4 ベースライン内容整列を参照。

align-self/justify-selfで指定された場合、 これらの値はベースライン自己整列を起動し、 ボックス全体がコンテナー内で移動され、 コンテナーのサイズにも影響する場合があります。 詳しくは§ 6.4 ベースライン自己整列を参照。

ベースライン自己整列がボックスに指定された場合、 まず内容分布が行われ、 その結果のボックスと内容が自己整列されます。 ただし、同じ軸でベースライン内容整列も指定されている場合や、 同じ軸で内容分布プロパティnormalの場合は、 その軸での使用値内容分布プロパティは、 startまたはsafe endベースライン整列の優先度がそれぞれ "first" か "last" の場合)となります。

ここに例画像を追加してください。

ボックスが共通整列コンテキストに属していない場合は、 フォールバック整列が使用されます。 例えば、ブロックボックスでalign-content: baselineを指定すると、 start整列にフォールバックします。 フォールバック整列は、ベースライン共有グループを その整列コンテナー内で整列する場合にも使用されます。

注: 同値なので、baselineの方が短いため、 CSSOMはfirst baselinebaselineとしてシリアライズします。 CSSOM § 6.7.2 CSS値のシリアライズ参照。

注: 関連するvertical-alignプロパティについては、 CSS2.1の設計の不統一により、baselinefirst baselineと等価ではありません。 インラインレベルボックスのベースライン整列の優先度は、 displayによって変わります。 (例:inline-blockはデフォルトでlast baseline、 inline-tableはデフォルトでfirst baselineを使います。)

4.3. 分布整列:stretchspace-betweenspace-aroundspace-evenlyキーワード

分布整列値は、 justify-contentalign-contentで、 コンテナーの余剰スペースを整列対象に分散するために使われます。

space-between | space-around | space-evenly | stretch
分布整列

スペースをこのように分散できない場合、 それぞれの値はフォールバック整列として動作します。 各分布値には既定のフォールバック整列が割り当てられています。 (モジュールの将来バージョンではフォールバック整列を明示指定できるようになるかもしれません。)

space-between
整列対象整列コンテナー内で均等分布されます。 最初の整列対象はコンテナーの開始端に揃え、 最後の整列対象は終了端に揃え、 残りの整列対象は隣接する間隔が全て等しくなるように分布します。
例えば、3つのアイテムの場合、余剰スペースは2つに分割され、最初と2番目、最後と2番目の間にそれぞれ半分ずつ分布されます。

この値の既定のフォールバック整列safe flex-startです。(フレックス以外のレイアウトモードでは、flex-startstartと同一です。)

space-around
整列対象整列コンテナー内で均等分布され、 両端には半分のスペースが付きます。 整列対象同士の間隔は全て等しく、 最初と最後の整列対象の前後のスペースは他と比べて半分になります。
例えば、3つのアイテムの場合、余剰スペースは6分割され、最初に1/6、最後に1/6、残りはそれぞれ1/3ずつ分布されます。

この値の既定のフォールバック整列safe centerです。

space-evenly
整列対象整列コンテナー内で均等分布され、 両端にも同じサイズのスペースが付きます。 整列対象同士の間隔、 最初の整列対象の前、 最後の整列対象の後の間隔も全て等しくなります。
例えば、3つのアイテムの場合、余剰スペースは4分割され、最初・最後・間2箇所に均等に分布されます。

この値の既定のフォールバック整列safe centerです。

stretch
整列対象の合計サイズが整列コンテナーよりも小さい場合、 autoサイズの整列対象のサイズが均等に(比例ではなく)増やされ、 max-height/max-width(または同等機能)の制約も尊重しつつ、 合計サイズがちょうど整列コンテナーを満たすようになります。
例えば、3つのアイテムの場合、余剰スペースは3分割され、各アイテムに1/3ずつ分布されます。

この値の既定のフォールバック整列flex-startです。(フレックス以外のレイアウトモードでは、flex-startstartと同じです。)

注: この`align-content/stretch`の定義は内容分布プロパティについてです。 自己整列プロパティjustify-self/align-selfには独自のstretch値があり、 整列対象のサイズを増やすだけでなく縮小することもできます、 整列コンテナーにぴったり合うようにします。

これらの値は<content-distribution>という文法で表されます:

<content-distribution> = space-between | space-around | space-evenly | stretch

4.4. オーバーフロー整列:safeおよびunsafeキーワードとスクロール安全制限

整列対象整列コンテナーより大きい場合、はみ出します。 一部の整列モードは、この状況でそのまま適用するとデータの欠落につながる可能性があります。 例えば、サイドバーの内容が中央揃えになっている場合、はみ出したときにボックスの一部がビューポートの開始端を超えてしまい、スクロールできず見えなくなります。

下図は「safe」と「unsafe」の中央揃えの違いを、カラムフレックスボックスを例に示しています:
About
Authoritarianism
Blog
About
Authoritarianism
Blog
左が"safe"、右が"unsafe"の中央揃えの例(中央揃えアイテムがコンテナーより大きい場合)

左図のアイテムは、はみ出さない限り中央揃えですが、はみ出した場合は余剰部分が終端側に出ます。 右図のアイテムは、中央揃えが厳密に保たれ、長すぎるアイテムは両端からはみ出します。

コンテナーがページの左端に配置された場合、"safe"の挙動の方が望ましく、 長いアイテムが画面左端で切れることなくすべて読めます。 一方、場合によっては"unsafe"の中央揃えが適していることもあり、すべてのアイテムが正確に中央揃えされます。

このような状況を制御するため、 オーバーフロー整列モードを明示的に指定できます。 "unsafe"整列は、はみ出し状況でも指定された整列モードをそのまま適用し、データ欠落が起きても変更しません。 "safe"整列は、はみ出し状況では整列モードを変更し、データ欠落を回避しようとします。 デフォルトは整列対象をスクロール可能エリア内に収める動作ですが、現時点ではこの安全機能は未実装です。

<overflow-position> = unsafe | safe
safe
整列対象のサイズが整列コンテナーをはみ出した場合、 整列対象は整列モードがstartであるかのように揃えられます。
unsafe
整列対象整列コンテナーのサイズ関係にかかわらず、指定された整列値がそのまま適用されます。
(値未指定)
オーバーフロー整列が明示指定されていない場合、 デフォルトのオーバーフロー整列は"safe"と"unsafe"の混合です。 詳細は§ 4.4.1 オーバーフロー整列の自動安全性を参照。

4.4.1. オーバーフロー整列の自動安全性

プロパティにオーバーフロー整列モードが指定されていない場合、 デフォルトの動作はsafeunsafeの中間であり、レイアウトモードによっても異なります。

4.4.1.1. スクロールコンテナーの内容分布

内容分布に関する、 スクロールコンテナーの デフォルトオーバーフロー整列動作はunsafeです。 normal以外の内容分布プロパティ値は、 スクロール可能オーバーフロー領域を変更し、はみ出した内容へアクセスできるようにします。 詳しくは§ 5.3 整列のオーバーフローとスクロールコンテナーを参照。

4.4.1.2. 絶対配置ボックスの自己整列

絶対配置整列対象で、該当する自己整列プロパティnormalでない場合、 デフォルトのオーバーフロー整列動作は以下の通りです:

  1. default overflow rectは、整列対象インセット修正containing block元containing blockの外接矩形とする。

  2. 整列対象が、インセット修正containing block(通常の整列コンテナー)からはみ出し、 しかしdefault overflow rectからはみ出していない場合は、指定通りに揃える(unsafe)。

  3. 整列対象のサイズがdefault overflow rect内に収まるが、 指定した整列によってdefault overflow rectからはみ出す場合は、できるだけ整列値を守りつつ 最小限の移動でdefault overflow rect内に収まるようにする(つまり、はみ出そうとしていた元containing block端に揃える)。

  4. 整列対象のサイズがdefault overflow rectからはみ出している場合は、 default overflow rect内でstart揃えにする(safeと同様)。

(上記条件に当てはまらない絶対配置整列対象については§ 4.4.1.3 その他の整列参照)

4.4.1.3. その他の整列

その他の要素の場合:

  1. 整列対象整列コンテナーからはみ出す場合、指定通りに揃える(unsafe)。

  2. 整列対象が 最近傍のスクロールコンテナースクロール可能オーバーフロー領域からはみ出そうとする場合(「スクロール不可領域」に拡張される場合)、 その方向へのはみ出しは残りのはみ出しが反対側に偏るように制限されます。

「スマート」デフォルト挙動の実装はWeb互換性がないかもしれません (そうでないことを期待しており、可能性は高いと思っています)ので、UAはこの点に関するフィードバックをWGに報告してください。 「スマート」デフォルト挙動を実装していないUAは、safeとしてalign-contentブロックコンテナーに適用し、 それ以外はunsafeとして動作すべきです。

5. 内容分布:ボックス内の内容の整列

内容分布は、 ボックス内の内容のコンテンツボックス内での整列を制御します。 内容分布プロパティalign-contentjustify-content(およびplace-contentショートハンド)で指定します。

要素内の内容の整列に影響する図

5.1. justify-contentおよびalign-contentプロパティ

名前: align-content
値: normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>
初期値: normal
適用対象: ブロックコンテナー、マルチカラムコンテナー、フレックスコンテナー、グリッドコンテナー
継承: no
パーセンテージ: n/a
算出値: 指定キーワード
正規順序: 文法に従う
アニメーション型: 離散型
名前: justify-content
値: normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]
初期値: normal
適用対象: マルチカラムコンテナー、フレックスコンテナー、グリッドコンテナー
継承: no
パーセンテージ: n/a
算出値: 指定キーワード
正規順序: 文法に従う
アニメーション型: 離散型

ボックス内の内容全体(整列対象)を、ボックス自体(整列コンテナー)内で揃えます: justify-contentはインライン/行/メイン軸沿い、 align-contentはブロック/列/交差軸沿い。 normal以外の値は、§ 4 整列キーワードで定義されています。

すべてのレイアウトモードにおいて、 整列対象整列コンテナーは、 *-contentプロパティが設定されているボックスの書字モードを引き継ぎます。

5.1.1. ブロックコンテナー(テーブルセル含む)

整列コンテナー ブロックコンテナーのコンテンツボックス。
整列対象 ブロック全体の内容(ユニットとして扱う)。
align-content ブロック軸<content-distribution>が指定された場合は フォールバック整列が使用される。 <overflow-position>が指定されていない場合、 かつブロックコンテナースクロールコンテナーでない場合、 整列はsafeとなる。
justify-content ブロックコンテナーには適用されず、効果もない。
normalの挙動 normal以外の値は ブロックコンテナーに独立フォーマッティングコンテキストの確立を強制する。

テーブルセルの場合、align-content: normalの挙動は、vertical-alignの算出値に依存する:topならstartとして、 bottomならendとして動作する。 それ以外の場合middleならcenterとして、 その他の値はbaselineとして動作する。 [CSS2]

それ以外の場合startとして動作する。

5.1.2. マルチカラムコンテナー

整列コンテナー マルチカラムコンテナーのコンテンツボックス。
整列対象 カラムボックス。 カラムボックス間に挿入される余白は、該当するカラムギャップに加算される。
align-content ブロック軸。 カラムボックス(およびカラムをまたぐ要素)を単一ユニットとして扱う。 <content-distribution>が指定された場合は フォールバック整列が使用される。
justify-content インライン軸
normalの挙動 normalstretchとして動作する。 どちらも[CSS-MULTICOL-1]のカラムサイズ規則に従って定義される。

autocolumn-widthを持つ場合、 justify-contentnormalまたはstretch以外の値の場合、 カラムは指定されたcolumn-widthとなり、 コンテナーを埋めるようには伸びない。 その後、カラムボックスはjustify-contentで指定した通りに整列される。

5.1.3. フレックスコンテナー

整列コンテナー フレックスコンテナーのコンテンツボックス。
整列対象 justify-contentの場合、 フレックスラインごとの フレックスアイテム

align-contentの場合、 複数行フレックスコンテナーにおいてのみ フレックスラインが整列対象になる。

align-content 交差軸
justify-content justify-contentプロパティはメイン軸に沿って適用されるが、 メイン軸の伸縮はflexで制御されるため、 stretchflex-startとして動作する。
normalの挙動 normalstretchとして動作する。

詳細は[CSS-FLEXBOX-1]参照。

5.1.4. グリッドコンテナー

整列コンテナー グリッドコンテナーのコンテンツボックス。
整列対象 該当軸のグリッドトラック。 トラック間の余白は該当するガターに加算され、 折り畳みガターはスペース挿入の1つの機会として扱う。
align-content ブロック軸グリッド行を整列する。
justify-content インライン軸グリッド列を整列する。
normalの挙動 normalstretchとして動作する。

詳細は[CSS-GRID-1]参照。

5.2. 内容分布ショートハンド:place-content プロパティ

名前: place-content
値: <'align-content'> <'justify-content'>?
初期値: normal
適用対象: ブロックコンテナー、フレックスコンテナー、グリッドコンテナー
継承: no
パーセンテージ: n/a
算出値: 個々のプロパティ参照
正規順序: 文法準拠
アニメーション型: 離散型

このショートハンドプロパティは、 align-contentjustify-contentの両方を一括で設定する。 最初の値がalign-contentに、 2番目の値がjustify-contentに割り当てられる。 省略時は最初の値がコピーされるが、<baseline-position>の場合はデフォルトでstartとなる。

5.3. 整列のオーバーフローとスクロールコンテナー

内容分布プロパティスクロールコンテナーで、かつはみ出した整列対象がある場合、 負スクロール可能オーバーフロー領域のクリッピングを 整列対象start揃えできるよう必要最小限に減らす。

例えば、 スクロール可能なフレックスコンテナーにjustify-content: flex-end (またはjustify-content: flex-startflex-flow: row-reverse)を指定した場合、 in-flow内容は、 コンテンツのmain-end端をフレックスコンテナーのmain-end端に揃えて初期配置され、 内容はmain-start端からはみ出して表示される。 ただし、ユーザーはスクロールして、はみ出したin-flow内容を上方向に見ることができる。 これはjustify-content: flex-startが指定された場合と同様である。
課題: この画像を適切なSVGに差し替えること。

注: 整列対象スクロール可能オーバーフロー領域と必ずしも一致しない。 整列対象からはみ出した内容(例:out-of-flowボックス)は スクロール可能オーバーフロー領域は広げるが、 整列対象は広げない。 したがって、end揃えのスクロールコンテナーは 初期スクロール位置が必ずしも最下部にならない可能性があり、 配置された内容がさらに 負スクロール可能オーバーフロー領域奥にあれば クリップされることがある。

オーバーフローは整列対象の一部ではない。 スクロールコンテナーでも同様。

この画像も差し替えること。

注: スクロールバーがあると スクロールコンテナーコンテンツボックスのサイズが変わり、 整列コンテナー整列対象のサイズも変化することがある。

5.4. ベースライン内容整列

行のようなレイアウトコンテキスト(共通整列コンテキスト)に参加するボックスの内容は、互いにベースライン整列できます。ベースライン内容整列は、ボックスのpaddingを効果的に増やし、 内容の整列ベースラインを 同じベースライン共有グループ内の他のベースライン整列ボックスと揃える役割を果たします。

ベースライン内容整列は、 align-content軸がボックスのブロック軸と平行な場合のみ適用できます (つまり「column」フレックスコンテナーには適用されません); それ以外の場合はフォールバック整列が使用されます。

ベースライン内容整列に参加するボックスのセットは、レイアウトモデルによって異なります:

テーブルセル:
(非置換)テーブルセルは、そのインライン軸がテーブル自体と平行であり、かつ 計算されたalign-contentfirst baselinelast baseline)であれば、開始/末端の行でベースライン内容整列に参加します。

注: 同じ列のセル同士のベースライン内容整列はサポートされていません。 ただし、需要と実装者の関心が十分あれば将来的に追加される可能性があります。

フレックスアイテム:
非置換フレックスアイテムは、 その計算されたalign-contentfirst baseline/last baselineであり、かつ インライン軸メイン軸と平行な場合、そのフレックスライン内でベースライン内容整列に参加します。
グリッドアイテム:
非置換グリッドアイテムは、 開始/末端の行または列(インライン軸に平行な方)で 計算されたalign-contentfirst baseline/last baselineであればベースライン内容整列に参加します。

さらに、 ベースライン内容整列に参加するには、 協調自己整列優先度も必要です。 これは、ボックスがベースライン共有グループ内の他のボックスと関連する端を揃えることを保証するものです。 つまり、ボックスのstartendマージン端が 対応するに揃えられること(かつ実際に揃うこと)が必要です。 ベースライン整列優先度が"first"("last")の場合、 ボックスのstart(end)端が揃うことが求められます。 それ以外の場合はフォールバック整列となります。

自己整列優先度が協調されるのはいつ?

ボックスのstartマージン端が、 containing blockの対応する端に揃えられ、 かつ「first」ベースライン整列優先度に対して 協調自己整列優先度がある場合、該当軸で:

ボックスのendマージン端containing blockの対応する端に揃えられ、 かつ「last」ベースライン整列優先度に対して 協調自己整列優先度がある場合、該当軸で:

詳細は§ 9.3 ボックスのベースライン整列を参照。ベースライン内容整列はボックスの本来的なサイズを増加させることがあります。

6. 自己整列:親内でのボックスの整列

自己整列は、 ボックスをcontaining block内でどう揃えるかを制御します。 自己整列プロパティ align-selfjustify-self(およびplace-selfショートハンド)で指定します。

要素がcontaining block内でどう整列されるかを示す図

6.1. インライン軸(またはメイン軸)自己整列:justify-selfプロパティ

名前: justify-self
値: auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]
初期値: auto
適用対象: ブロックレベルボックス、絶対配置ボックス、グリッドアイテム
継承: no
パーセンテージ: n/a
算出値: 指定キーワード
正規順序: 文法準拠
アニメーション型: 離散型

ボックス(整列対象)を containing block(整列コンテナー)内で インライン/行/メイン軸に沿って整列します: ボックスの外側の端が整列コンテナー内で、 整列値に従って揃えられます。 各値の意味:

auto

親がなければnormalと同じ動作。 または絶対配置ボックスの実際の位置を決定する際にも同様。 それ以外の場合(絶対配置ボックスの静的位置決定も含む)は、親ボックスの計算されたjustify-items値 (legacyキーワードを除く)で動作。

normal

レイアウトモードの「デフォルト」整列を表す。 挙動は下記の通りレイアウトモードによって異なる。

stretch

ボックスの算出width/height (該当軸に応じて)がautoで、かつその軸の両マージンがautoでない場合、 ボックスの外側サイズが 整列コンテナーをできるだけ満たす長さになるように使用サイズが設定されます。 ただしmin-height/min-width/max-height/max-widthの制約は守る。

特に指定がなければ、この値は一般的にはflex-startにフォールバックし、 同じ軸でfirst baselinelast baselineベースライン内容整列が指定されていれば self-startself-endとなる。

注: stretch キーワードは要素を縮小させてコンテナーに合わせる場合もある。

<baseline-position>

ベースライン自己整列を示す。 詳細は§ 4.2 ベースライン整列:baselineキーワードとfirst/last修飾子§ 6.4 ベースライン自己整列§ 9 ベースライン整列詳細参照。

<overflow-position>? <self-position>

上記§ 4 整列キーワードで定義。

stretch以外の値は、 width/heightautoの場合、fit-contentとして扱われる。

注: autoマージンは、実質的にマージン領域のサイズを調整するため、 justify-selfより優先される。

6.1.1. ブロックレベルボックス

justify-self 一般的には、ブロックのcontaining blockインライン軸static-position containing blockインライン軸は、静的位置を決定する場合に利用されます。
整列コンテナー ボックスのcontaining block。 ただし、ブロックレベル要素がブロックフォーマッティングコンテキストを確立し、フロートの隣に配置されている場合、 整列コンテナーはフロートによって占有されるスペース分だけ減少します。 containing block書字モードを引き継ぎます。
整列対象 ブロックのマージンボックスであり、ブロックの書字モードを引き継ぎます。
normalの挙動 ボックスはブロックレイアウトのデフォルト規則に従って配置されます (CSS2.1§10.3参照)。
その他の詳細 CSS2.1のブロックレベルフォーマッティングに関しては [CSS2]セクション10.3.3の「過剰制約」計算のルールは ここで指定された整列を優先して無視され、 marginプロパティの使用値も過剰制約を補正するために調整されません。

このプロパティはフロートには適用されません。

これらの規則の効果として、例えばautoサイズのブロックレベルテーブルは、サイドマージンを持ちながら整列できるようになります。 テーブルのmax-contentサイズがcontaining blockより細い場合は、そのサイズに縮小されて指定通りに整列されます。 max-contentサイズが広い場合は、containing blockいっぱいに広がり、マージンがblock端から適切な間隔を確保します。

6.1.2. 絶対配置ボックス

このセクションは、justify-selfが 絶対配置ボックスのmargin boxが (絶対配置)containing blockに対してどのように配置されるかに及ぼす影響を説明します。

justify-self ブロックのcontaining blockのインライン軸
整列コンテナー ボックスのcontaining block。 insetプロパティ(top/right/bottom/left)で修正される containing block書字モードを引き継ぎます。 該当軸の両方のinsetプロパティがautoの場合、 ボックスのstatic-position rectangle(両insetをボックスの静的位置にセット)を用い、 static-position containing block書字モードを引き継ぎます。
整列対象 ボックスのmargin boxであり、ボックスの書字モードを引き継ぎます。
normalの挙動 stretchまたはstartとして動作します(ボックスの型による)。 CSS Positioned Layout 3 § 4 Absolute Positioning Layout Model参照。
その他の詳細 CSS2.1のフォーマッティングに関しては [CSS2]セクション10.3.7の「過剰制約」計算のルールは ここで指定された整列を優先して無視され、 insetプロパティの使用値も過剰制約を補正するために調整されません。

stretchnormal以外の値は 非置換絶対配置ボックスfit-content sizingによる autoサイズの計算を行わせます。

stretchは 置換絶対配置ボックスでも 非置換ボックスと同様にcontaining blockを満たすように動作します。

注: 片方のみinsetプロパティがautoの場合は CSS2セクション10.3.7の計算でサイズ・位置が完全に決定され、 justify-selfは効果を持ちません。 (両方がautoなら ボックスは静的配置となり、上記の通り static-position rectangle内で整列可能です。)

6.1.3. テーブルセル

このプロパティはテーブルセルには適用されません。 セルの位置・サイズはテーブルレイアウトによって完全に制約されるためです。

6.1.4. フレックスアイテム

このプロパティはフレックスアイテムには適用されません。 メイン軸に複数アイテムが存在するためです。 伸縮についてはflexメイン軸の整列はjustify-contentで制御します。[CSS-FLEXBOX-1]

6.1.5. グリッドアイテム

justify-self グリッドのインライン軸
整列コンテナー グリッドアイテムグリッドエリア書字モードグリッドコンテナーのものを引き継ぎます。
整列対象 グリッドアイテムのmargin boxであり、 グリッドアイテム書字モードを引き継ぎます。
normalの挙動 一般的な非置換要素ではstretch、 一般的な置換要素ではstartとしてサイズ設定されます。 詳細はGrid Item Sizing[CSS-GRID-1])参照。 結果のボックスはstart揃えになります。

詳細は[CSS-GRID-1]参照。

6.2. ブロック軸(または交差軸)自己整列:align-selfプロパティ

名前: align-self
値: auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>
初期値: auto
適用対象: フレックスアイテム、グリッドアイテム、絶対配置ボックス
継承: no
パーセンテージ: n/a
算出値: 指定キーワード
正規順序: 文法準拠
アニメーション型: 離散型

ボックス(整列対象)を containing block(整列コンテナー)内で ブロック/列/交差軸に沿って整列します: ボックスの外側の端が整列コンテナー内で、 整列値に従って揃えられます。 各値の意味:

auto

親がなければnormalと同じ動作。 または絶対配置ボックスの実際の位置を決定する際にも同様。 それ以外の場合(絶対配置ボックスの静的位置決定も含む)は、親ボックスの計算されたalign-items値 (legacyキーワードを除く)で動作。

normal

レイアウトモードの「デフォルト」整列を表す。詳細は下記。

stretch

justify-selfで定義された内容(§ 6.1 インライン軸(またはメイン軸)自己整列:justify-selfプロパティ)と同じです。

<baseline-position>

ベースライン自己整列を示します。 詳細は§ 4.2 ベースライン整列:baselineキーワードとfirst/last修飾子§ 6.4 ベースライン自己整列§ 9 ベースライン整列詳細参照。

<overflow-position>? <self-position>

上記§ 4 整列キーワードで定義。

注: autoマージンは、実質的にマージン領域のサイズを調整するため、 align-selfより優先される。

6.2.1. ブロックレベルボックス

align-selfプロパティはブロックレベルボックス(フロート含む)には適用されません。 ブロック軸に複数アイテムが存在するためです。

6.2.2. 絶対配置ボックス

このセクションは、align-selfが 絶対配置ボックスのmargin boxが (絶対配置)containing blockに対してどのように配置されるかに及ぼす影響を説明します。

align-self ボックスのcontaining blockブロック軸。一般的にはこれ。 static-position containing blockブロック軸は、静的位置を決定する場合に利用されます。
整列コンテナー ボックスのcontaining block。 insetプロパティ(top/right/bottom/left)で修正される containing block書字モードを引き継ぎます。 該当軸の両方のinsetプロパティがautoの場合、 ボックスのstatic-position rectangle(両insetをボックスの静的位置にセット)を用い、 static-position containing block書字モードを引き継ぎます。
整列対象 ボックスのmargin boxであり、ボックスの書字モードを引き継ぎます。
normalの挙動 stretchまたはstartとして動作します(ボックスの型による)。 CSS Positioned Layout 3 § 4 Absolute Positioning Layout Model参照。
その他の詳細 CSS2.1のフォーマッティングに関しては [CSS2]セクション10.6.4の「過剰制約」計算のルールは ここで指定された整列を優先して無視され、 insetプロパティの使用値も過剰制約を補正するために調整されません。

stretchnormal以外の値は 非置換絶対配置ボックスfit-content sizingによる autoサイズの計算を行わせます。

stretchは 置換絶対配置ボックスでも 非置換ボックスと同様にcontaining blockを満たすように動作します。

注: 片方のみinsetプロパティがautoの場合は CSS2セクション10.6.4の計算でサイズ・位置が完全に決定され、 align-selfは効果を持ちません。 (両方がautoなら ボックスは静的配置となり、上記の通り static-position rectangle内で整列可能です。)

6.2.3. テーブルセル

このプロパティはテーブルセルには適用されません。 セルの位置・サイズはテーブルレイアウトによって完全に制約されるためです。

6.2.4. フレックスアイテム

align-self フレックスコンテナー交差軸
整列コンテナー フレックスラインフレックスアイテムが属する行)。 書字モードフレックスコンテナーのものを引き継ぐ。
整列対象 フレックスアイテムのmargin box。 フレックスアイテム書字モードを引き継ぐ。
normalの挙動 stretchとして動作する。

詳細は[CSS-FLEXBOX-1]参照。

6.2.5. グリッドアイテム

align-self グリッドのブロック軸
整列コンテナー グリッドアイテムグリッドエリア書字モードグリッドコンテナーのものを引き継ぐ。
整列対象 グリッドアイテムのmargin box。 グリッドアイテム書字モードを引き継ぐ。
normalの挙動 一般的な非置換要素ではstretch、 一般的な置換要素ではstartとしてサイズ設定されます。 詳細はGrid Item Sizing[CSS-GRID-1])参照。 結果のボックスはstart揃えになります。

詳細は[CSS-GRID-1]参照。

6.3. 自己整列ショートハンド:place-selfプロパティ

名前: place-self
値: <'align-self'> <'justify-self'>?
初期値: auto
適用対象: ブロックレベルボックス、絶対配置ボックス、グリッドアイテム
継承: no
パーセンテージ: n/a
算出値: 個々のプロパティ参照
正規順序: 文法準拠
アニメーション型: 離散型

このショートハンドプロパティalign-selfjustify-selfの両方を一括でセットします。 最初の値はalign-selfに、 2番目の値はjustify-selfに割り当てられます。 省略された場合は、最初の値がコピーされます。

6.4. ベースライン自己整列

行のようなレイアウトコンテキスト(共通整列コンテキスト)に参加するボックス同士は、 ベースラインで互いに揃えることができます。ベースライン自己整列は、ボックスのマージンを効果的に増やし、 ボックスの整列ベースラインを 同じベースライン共有グループ内の他のベースライン整列ボックスと揃える役割を果たします。

ベースライン自己整列に参加するボックスのセットはレイアウトモデルによって異なります:

フレックスアイテム:
フレックスアイテムは、 計算されたalign-selffirst baseline/last baselineであれば、そのフレックスライン内でベースライン自己整列に参加します。 詳細は[CSS-FLEXBOX-1]参照。
グリッドアイテム:
グリッドアイテムは、 開始/末端行または列でalign-selfまたはjustify-selfプロパティがそれぞれfirst baseline/last baselineとなる場合ベースライン自己整列に参加します。

詳細は§ 9.3 ボックスのベースライン整列を参照。ベースライン自己整列はボックスの本来的なサイズ寄与を増加させることがあります。

6.5. 静的位置インセットを持つ絶対配置ボックスのサイズへの効果

インライン軸オフセットが両方ともautoの絶対配置ボックスについては、 利用可能なスペースも整列によって影響を受けます。

注: [CSS2]では、利用可能なスペースdirectionプロパティで static-position containing blockを決定します。 (CSS2§10.3.7CSS2§10.3.8参照。) 基本的にこれらのルールは、一方のautoインセット (通常は開始端のインセット)をstatic-position rectangleの対応する端に揃え、 もう一方はcontaining blockの対応する端(つまりインセットをゼロ)に揃えます。 自己整列プロパティは、placementのためのcontaining blockdirection参照を置き換えるだけでなく、 ここで定義するように、サイズ決定の参照も置き換えます。

したがって、CSS2§10.3.7CSS2§10.3.8のルールを解釈する際は、 directionプロパティの参照箇所を、 代わりにalign-selfjustify-selfプロパティの値参照に置き換えます (該当軸で定義されている方)。 left相当の整列はltrの定義、right相当の整列はrtlの定義と同様に扱います。 normalstartとして、 分布整列値はそのフォールバック整列として扱います。

center整列の場合、 ボックスの利用可能なスペースstatic-position rectangleの中央から 該当軸のcontaining blockの最も近い端までの距離の2倍となります。

Start alignment sizes into the space between
		          the start edge of the static-position rectangle and the end edge of the containing block.
		          End alignment sizes into the space between
		          the end edge of the static-position rectangle and the start edge of the containing block.
		          Center alignment sizes into the space between
		          the two edges of the static-position rectangle.
常に inline-start静的位置から inline-end containing block端までの利用可能スペースでサイズ計算する代わりに、 autoインセットを持つ絶対配置要素は、 static-position rectangleの整列指定に最も適した端を参照してサイズが決まります。
例えば、 ボックスのcontaining blockdirectionltrで、かつ自身のjustify-selfendの場合、 direction: rtlのルールを適用します。 directionrtlで、justify-contentspace-betweenの場合も direction: rtlのルールを適用します。 などなど。 center(および同等値)の場合は 両端とも静的位置に合わせます。 絶対配置ボックスはそのスペース(ゼロ未満ならゼロ)内でサイズが決定されます。

注: align-selfjustify-selfプロパティは サイズ決定の追加側面にも影響を与える可能性があります。 例えばjustify-self: stretchfit-contentによる「縮めてフィット」サイズ計算を 利用可能なスペース全体を消費する stretch-fit sizingに置き換えることができます。 これはここで説明している利用可能スペース調整とは独立した効果です。

注: これは、絶対配置ボックスのサイズ決定時の利用可能なスペースの計算方法だけに影響します。 配置自体は前節で説明した通りです。

7. デフォルト整列

align-itemsjustify-itemsプロパティ (およびplace-itemsショートハンド)は、 要素の子ボックスに対するデフォルトのalign-selfおよびjustify-selfの挙動を設定します。

要素内のグリッドアイテムの整列が影響を受ける図

7.1. インライン軸(またはメイン軸)のデフォルト整列:justify-itemsプロパティ

名前: justify-items
値: normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]
初期値: legacy
適用対象: すべての要素
継承: no
パーセンテージ: n/a
算出値: 指定キーワード。ただしlegacy (本文参照)は除く
正規順序: 文法準拠
アニメーション型: 離散型

このプロパティは、このボックスのフォーマッティングコンテキストに参加するすべての子ボックス (匿名ボックスを含む) のデフォルトjustify-selfを指定します。 各値の意味:

legacy
このキーワードは値が実質的に子孫に継承されるようにします。

legacyキーワードが単独で (leftrightcenterキーワードが付かずに)現れる場合: justify-items継承値legacyキーワードを含む場合は、 この値は継承値に算出されます。 含まない場合はnormalに算出されます。

justify-self:autojustify-itemsの値を参照する場合、 参照されるのは整列キーワードのみであり、legacy キーワードは参照されません。 これはHTMLの<center>要素やalign属性のレガシー整列挙動を実現するためのものです。

その他の値は特別な処理はなく、justify-selfに参照されます。

7.2. ブロック軸(または交差軸)のデフォルト整列:align-itemsプロパティ

名前: align-items
値: normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]
初期値: normal
適用対象: すべての要素
継承: no
パーセンテージ: n/a
算出値: 指定キーワード
正規順序: 文法準拠
アニメーション型: 離散型

このプロパティは、このボックスのフォーマッティングコンテキストに参加するすべての子ボックス (匿名ボックスを含む) のデフォルトalign-selfを指定します。

値は特別な処理はなく、align-selfに参照されます。

7.3. デフォルト整列ショートハンド:place-itemsプロパティ

名前: place-items
値: <'align-items'> <'justify-items'>?
初期値: 個々のプロパティ参照
適用対象: すべての要素
継承: no
パーセンテージ: n/a
算出値: 個々のプロパティ参照
正規順序: 文法準拠
アニメーション型: 離散型

このショートハンドプロパティalign-itemsjustify-itemsの両方を一度でセットします。 最初の値はalign-itemsに、 2番目の値はjustify-itemsに割り当てられます。 省略された場合は最初の値がコピーされます。

8. ボックス間の隙間

marginpaddingは、個々のボックスの周囲の視覚的なスペース指定に使えますが、 レイアウトコンテキスト内で隣接するボックス同士の間隔を一括指定したい場合もあります。 特に兄弟ボックス同士の間隔と、最初/最後のボックスとコンテナー端の間隔を区別したい場合に便利です。

gapプロパティ、 およびrow-gapcolumn-gapサブプロパティは、 マルチカラムフレックスグリッドレイアウトに対してこの機能を提供します。

8.1. 行・列のガター:row-gapcolumn-gapプロパティ

名前: row-gap, column-gap
値: normal | <length-percentage [0,∞]>
初期値: normal
適用対象: マルチカラムコンテナーフレックスコンテナーグリッドコンテナー
継承: no
パーセンテージ: § 8.3 gapプロパティにおけるパーセンテージ参照
算出値: 指定キーワード。そうでなければ算出<length-percentage>
正規順序: 文法準拠
アニメーション型: 算出値型による

これらのプロパティはコンテナー内のアイテム間の固定長ガターを指定し、間にスペースを追加します。 これはspace-betweenキーワードや 内容分布プロパティと似ていますが、 余剰スペースの分割ではなく固定サイズです。 column-gapプロパティは「カラム」間のスペース、 コンテナーのインライン軸で ボックスを分離し、インライン軸marginのような役割を持ちます。 row-gapは「行」間のスペース、 コンテナーのブロック軸で ボックスを分離します。

各値の意味:

<length-percentage [0,∞]>

「行」や「カラム」の間の隙間を指定します。 適用されるレイアウトモードで定義されます。 詳細は下記各節参照。

負の値は無効です。 パーセンテージについては§ 8.3 gapプロパティにおけるパーセンテージ参照。

normal

normalマルチカラムコンテナーでは使用値が1em、 それ以外の文脈では0pxとなります。

ガターはアイテム間の最小スペースとなり、 justify-contentalign-contentによって追加スペースが加えられる場合があります。 その場合、ガターのサイズが事実上増加します。

これらのプロパティの厳密な扱いはレイアウトコンテナーごとに異なります:

マルチカラムコンテナー
column-gapは隣接するガターを指定します。 詳細は[CSS-MULTICOL-1]参照。row-gapガターを、column boxesで確立される行間に指定します。 詳細はcolumn-heightおよび[CSS-MULTICOL-2]参照。
フレックスコンテナー
メイン軸に適用する場合(例:rowフレックスコンテナーのcolumn-gap)は、 アイテム間の最小スペースを示します (隣接するフレックスアイテム間に追加の固定サイズmarginが挿入されたかのように扱う)。

交差軸に適用する場合(例:rowフレックスコンテナーのrow-gap)は、 隣接するフレックスライン間の最小スペースを示します。

グリッドコンテナー
row-gapcolumn-gapプロパティは、 グリッドコンテナーに指定すると、それぞれガターグリッド行グリッド列間に定義します。 詳細はCSS Grid Layout 1 § 10.1 Gutters: the row-gap, column-gap, and gap properties参照。

いずれの場合も、ガターフラグメントブレイクと重なる場合は消失します。[CSS-BREAK-3]

注: テーブルボックスはセル間の分離にgapプロパティを使いません。 代わりにborder-spacingプロパティを使い、 機能に若干の違いがあります: 継承し、 また最も外側のセルとテーブルの枠線との追加スペースも指定します (space-evenlyに近いが、space-betweenとは異なります)。

8.2. ギャップ・ショートハンド:gapプロパティ

名前: gap
値: <'row-gap'> <'column-gap'>?
初期値: 個々のプロパティ参照
適用対象: マルチカラムコンテナーフレックスコンテナーグリッドコンテナー
継承: no
パーセンテージ: コンテンツ領域の該当寸法に基づく
算出値: 個々のプロパティ参照
正規順序: 文法準拠
アニメーション型: 算出値型による

このプロパティはショートハンドであり、row-gapcolumn-gapを一括で指定します。 <'column-gap'>を省略した場合、 <'row-gap'>と同じ値が設定されます。

marginやpaddingがガターサイズに加算される図解

注: gapプロパティは ボックス間にできる「ガター」や「路地」の目に見える一要素に過ぎません。 margin、padding、分布整列を使うことで、 gapで指定した以上に ボックス間の見た目の間隔が広がる場合があります。

8.3. gapプロパティのパーセンテージ指定

一般に、 gapプロパティで導入されるギャップは 空のアイテム・トラック等がギャップのサイズ分あるかのように機能します。 つまり、作者は追加の空アイテムやトラック等をコンテナーに挿入することで gapと同じ効果を再現できます。

gapのパーセンテージ指定は 常に要素のcontent boxの該当寸法を基準に解決されます。 このサイズが明確な場合は、 動作は定義通りであり、レイアウトモード問わず一貫しています。 ただし、レイアウトモードによってアイテム・トラック等の循環パーセンテージサイズの扱いが異なるため、 gapもそれに準じます:

グリッドレイアウトの場合

min sizeプロパティやmargin/paddingと同様 [CSS-SIZING-3]循環パーセンテージサイズは本来的なサイズ寄与決定時はゼロを基準とし、 ボックスの内容配置時はcontent boxを基準として解決されます。

フレックスレイアウトの場合

循環パーセンテージサイズはすべてのケースでゼロを基準として解決されます。

8.4. レガシーギャッププロパティ:grid-row-gapgrid-column-gapgrid-gapプロパティ

Grid Layoutモジュールは当初、ガター用に独自プロパティを持っていましたが、 その後、既存のrow-gapcolumn-gapに統一されました。 互換性維持のため、これらのgrid接頭辞付き名称も以下のようにサポートされます:

9. ベースライン整列詳細

ベースライン共有グループ内のボックスは、 互いに整列ベースラインを使って整列されます。 例えば、横書きモードでは、同じ行のテーブルセルにalign-content: baselineを指定すると、 それらの最初の整形行のベースラインが揃います。 この章では、多様なベースラインや国際化CSSにおける書字モードを考慮したベースライン整列の厳密な定義を示します。

ベースラインセットは、 共通のベースラインテーブルに紐づく(アルファベット・中央など)複数のベースライン集合です。 組版の伝統的な慣習では通常ひとつが使われますが、書記体系によって異なり、 複数の書記体系が混在する場合、1行内で複数ベースラインが使われることもあります。 ベースラインや書字モードの詳細はCSS Writing Modes 3 § 4.1 ベースラインの概要参照。

9.1. ボックスのベースライン決定

各ボックスは、 ある軸について、 first baseline set(およびlast baseline set) を持っている可能性があり、 これはそのボックス内の最初/最後のテキスト行のベースラインセットと名目的に対応します。 整列ベースラインは、 ボックスが整列コンテキスト内で整列に使われるベースラインであり、 ベースラインセットの一つです。 通常はその整列コンテキストで支配的なベースラインとなります。 (dominant-baselinealignment-baselineプロパティについては[CSS-INLINE-3]参照。)

ボックスのfirst/lastベースラインセットは、 レイアウトモデルごとに以下のように決定されます:

line box
line boxのfirst/lastベースラインセットは 支配的ベースラインと、そのroot inline boxのフォント設定から 生成されます。
ブロックコンテナー
ブロックコンテナーのfirst/lastベースラインセットは in-flowな最初/最後のline box、またはベースラインセットを持つ最初/最後のin-flowブロックレベル子要素から取得されます。 存在しなければベースラインセットはありません。

ただし、レガシー理由で baseline-sourceauto初期値)の場合は、 ブロックレベルまたはインラインレベルブロックコンテナースクロールコンテナーの場合は必ずlast baseline setを持ち、 そのベースラインはすべてblock-endmargin edgeと対応します。

マルチカラムコンテナー
マルチカラムコンテナーのfirstベースラインセットは、 ベースラインセットのうち、 カラムまたはカラムスパンナーのうち、最も高い(block-start側)ベースラインが マルチカラムコンテナー整列ベースラインと対応するものです。 存在しなければベースラインセットはありません。

lastベースラインセットは 同様に、lastベースラインセット最も低いblock-end側)ベースラインを使います。

テーブル
テーブルボックスのfirst/lastベースラインセットは 最初/最後の行のfirst/lastベースラインセットです。

インラインブロックのfirst/lastベースラインセットを探す際は、 テーブルボックスが寄与するベースラインはスキップしなければなりません。 (この挙動は[CSS2]のレガシー仕様です。)

テーブル行
行内のセルがfirst baselinelast baseline整列に インライン軸で参加している場合、 行のfirst/lastベースラインセットは それらの共通整列ベースラインと行の利用可能な最初のフォントから 生成されます(整列後)。 それ以外の場合、行のfirst/lastベースラインセットは 行内セルの最も高い/低いcontent edgeから合成されます。[CSS2]

セルのrowスパンは、first/last baseline整列の目的では スパンした最初/最後の行だけ参加します。

フレックスコンテナー
Flex Baselines[CSS-FLEXBOX-1])参照。
グリッドコンテナー
Grid Baselines[CSS-GRID-1])参照。

ベースライン生成:ボックスに単一ベースラインからベースラインセットを生成するには、 そのボックスのフォント設定と利用可能な最初のフォントでベースラインテーブルを使い、 そのベースラインセットを与えられた単一ベースラインに揃えます。

ベースライン整列に参加するボックスがベースラインセットを持たない場合、 その整列ベースラインは 参加するフォーマッティングコンテキストのルールに従って合成されます。 ベースライン合成:矩形(または平行な2本の線)から合成する場合は、 alphabeticベースラインはline-underの線から、 centralベースラインは2端・線の位置の平均で求めます。 その他のベースラインの合成規則はCSS Inline Layout 3 § A Synthesizing Alignment Metrics参照。

注: ボックスからベースラインを合成する際に使う端は、 フォーマッティングコンテキストによって異なります: インラインレベルボックスはmargin edgeから合成[CSS-INLINE-3])、 テーブルセルはcontent edgeから合成[CSS2])、 グリッド・フレックスアイテムはborder edgeから合成[CSS-GRID-1] [CSS-FLEXBOX-1])。

一般に、整列対象となるボックスや図形・オブジェクトの書字モードを使って、 line-underline-over端を決定します。 ただし、その書字モードブロックフロー方向が整列コンテキストの軸と平行な場合、 軸互換の書字モードを仮定しなければなりません:

ボックスのベースライン決定においては、 ボックス自身と、スクロール機構(overflowプロパティ参照)を持つin-flowの子孫は 初期スクロール位置にあるものとして扱わなければなりません。 さらに、 スクロールコンテナーのfirst/lastベースライン位置が border edge外にある場合は、そのベースライン位置はborder edgeにクランプされます。

9.2. ベースライン整列グループ化

ベースライン共有グループは、 一緒にベースライン整列を行うボックス群で構成されます。 これは以下の両方を満たす場合に限り可能です:

注: ベースライン内容整列に参加するボックスと ベースライン自己整列に参加するボックスは同じベースライン共有グループとなり得るため、互いに整列できます。 両者の違いは、整列のための余白がボックス内部か外部かにあります。

ボックスは、特定の軸に沿って特定のボックスによって確立された整列コンテキストを共有する場合、以下の条件を満たします:

注: 概念的には、line box内のインラインレベルボックスも自己整列コンテキストを共有し、 ベースライン共有グループに参加します。 ただし、これらがベースライン整列するのはvertical-alignプロパティによる場合のみであり、 本モジュールで定義されたプロパティではありません。 詳細は[CSS-INLINE-3]参照。

ボックスが複数の整列コンテキストにまたがる場合、 その軸の開始端/終了端の整列コンテキストで first/lastベースライン整列に参加します。 例:3行にまたがるテーブルセルはfirst-baseline整列では最初の行、 last-baseline整列では最後の行のセルと整列します。

同じベースライン共有グループ内の2つのボックスのベースライン整列優先度互換性ありとなるのは、以下のいずれかの場合です:

9.3. ボックスのベースライン整列

同じベースライン共有グループに属する整列対象とそのベースラインが与えられた場合、 整列対象のベースライン整列は次の通り行います:

  1. ベースライン共有グループのベースラインテーブルを、 グループの利用可能な最初のフォント整列コンテキストから生成し、 さらにその中央ベースラインでミラーしたベースラインテーブルも重ねる。 これらが整列対象が揃えるベースライン「グリッド」となる。

  2. 整列対象を、その指定された整列ベースラインで グループのベースラインテーブルまたはそのミラーに揃える(整列対象line orientationに応じて)。 特に指定がなければ(例:alignment-baselineプロパティ)、 整列ベースライン支配的ベースライン(dominant baseline)です。

  3. 揃えたベースライン共有グループ整列コンテナー内で そのフォールバック整列に従って配置する。 フォールバック整列は アイテムの物理方向に解決したものとする。

  4. first/lastベースライン内容整列の場合は、 整列コンテナーの開始/終了content edgeと 整列対象の端の間に 必要最小限の余白を追加して、 整列コンテナーのstart/end margin edgeが 整列コンテキスト内で揃うようにし、 かつグループ内のベースライン整列は維持する。

付録A: 静的配置用語

ある軸の両方のinsetプロパティautoとなっている絶対配置ボックスでは、 CSS2は静的位置でサイズと位置を決定します。 CSS2.1§10.3.7参照。 ボックス整列プロパティは 他のレイアウトモードと同様にこれらの計算を変更します。 これらの変更は静的位置矩形を参照し、 その端がボックスの静的位置containing blockの各側から示します。

静的位置矩形とそれに対応する静的位置は、 「仮想ボックス」のレイアウトモデルによって定義されます:

ブロックレイアウト
静的位置ブロックレベルボックスについて、 [CSS2]第10章で定義されています。 静的位置矩形は、 ボックスのstatic-position containing blockのインライン軸側で ゼロ厚みの矩形として広がります(CSS2§10.3.7参照)。 位置はblock-start静的位置です(CSS2§10.6.4参照)。
インラインレイアウト
静的位置インラインレベルボックスについて、 [CSS2]第10章で定義されています。 静的位置矩形は、 「仮想ボックス」を含むはずだったline boxline-over/line-under側で ゼロ厚みの矩形として広がります(CSS2§10.3.7参照)。 位置はinline-start静的位置です。
フレックスレイアウト
静的位置矩形は、フレックスコンテナーの子について、 flex containercontent edgeと対応します。 CSS Flexbox 1 § 4.1 絶対配置フレックス子参照。
グリッドレイアウト
デフォルトでは、静的位置矩形は、グリッドコンテナーの子について、 grid containercontent edgeと対応します。 ただし、そのgrid containerが実際のcontaining blockも確立する場合は、 grid areagrid-placementプロパティで指定)を 静的位置矩形とする。 grid container childの静的位置[CSS-GRID-1])参照。

10. 変更点

2023年2月17日 ワーキングドラフト以降の変更点:

2021年12月24日 ワーキングドラフト以降の変更点:

2020年4月21日 ワーキングドラフト以降の変更点:

2018年12月6日 ワーキングドラフト以降の変更点:

2018年8月30日 ワーキングドラフト以降の変更点は、いくつかの軽微な明確化のみ。

2018年4月23日 ワーキングドラフト以降の変更点:

2017年9月6日 ワーキングドラフト以降の変更点:

2017年7月20日 ワーキングドラフト以降の変更点:

2017年5月15日 ワーキングドラフト以降の変更点:

2017年4月7日 ワーキングドラフト以降の変更点:

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

これは単純なレイアウト仕様なので、 新たなプライバシーに関する考慮事項はありません。

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

これは単純なレイアウト仕様なので、 新たなセキュリティに関する考慮事項はありません。

謝辞

特別な感謝を David Baron, Javier Fernandez, Markus Mielke, Alex Mogilevsky, そしてCSSWGの2008年3月F2F整列ディスカッション参加者に捧げます。 彼らは本仕様で説明される整列モデルに貢献しました。 また、Melanie Richards氏には各種整列キーワードの図解作成に感謝します。

適合性

文書の慣例

適合性要件は、記述的な主張と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はアクセシブルな代替手段を提供しなければならない

適合性クラス

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

スタイルシート
CSS スタイルシート
レンダラー
UAで、スタイルシートの意味を解釈し、 それを使用する文書をレンダリングするもの。
オーサリングツール
UAで、スタイルシートを書き出すもの。

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

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

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

部分実装

作者がフォールバック値を割り当てるために将来互換のパース規則を活用できるように、 CSSレンダラーは、利用可能なレベルのサポートがないatルール、プロパティ、プロパティ値、キーワードその他構文要素を無効として(適切に無視)扱わなければならない。特に、ユーザーエージェントは選択的にサポートされていない値だけ無視し、 サポートされている値だけを複数値プロパティ宣言内で採用することはしてはならない。いずれかの値が無効と見なされる場合(サポートされていない値は必ず無効)、CSSは宣言全体が無視されることを要求する。

不安定機能・独自拡張の実装

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

非実験的実装

仕様がCandidate Recommendation段階に達すると、非実験的な実装が可能となり、実装者は仕様に従い正しく実装できるCRレベルの機能については、プリフィックスなしの実装をリリースするべきです。

CSSの相互運用性を維持するため、CSS Working Groupは非実験的CSSレンダラーに対し、 いずれかのCSS機能のプリフィックスなし実装をリリースする前に、実装レポート(必要ならテストケースも)をW3Cに提出するよう求めています。 W3Cに提出されたテストケースはCSS Working Groupによるレビューや修正の対象となります。

テストケースや実装レポートの提出方法等は、CSS Working Groupのウェブサイト https://www.w3.org/Style/CSS/Test/ で確認できます。質問はpublic-css-testsuite@w3.orgメーリングリストへ。

索引

本仕様で定義された用語

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

参考文献

規範的参考文献

[CSS-BOX-4]
Elika Etemad. CSS Box Model Module Level 4. 2024年8月4日. WD. URL: https://www.w3.org/TR/css-box-4/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 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 Cascading and Inheritance Level 5. 2022年1月13日. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-DISPLAY-4]
Elika Etemad; Tab Atkins Jr.. CSS Display Module Level 4. 2024年12月19日. FPWD. URL: https://www.w3.org/TR/css-display-4/
[CSS-FLEXBOX-1]
Tab Atkins Jr.; et al. CSS Flexible Box Layout Module Level 1. 2018年11月19日. CR. URL: https://www.w3.org/TR/css-flexbox-1/
[CSS-FONTS-4]
Chris Lilley. CSS Fonts Module Level 4. 2024年2月1日. WD. URL: https://www.w3.org/TR/css-fonts-4/
[CSS-GRID-1]
Tab Atkins Jr.; et al. CSS Grid Layout Module Level 1. 2020年12月18日. CRD. URL: https://www.w3.org/TR/css-grid-1/
[CSS-GRID-2]
Tab Atkins Jr.; Elika Etemad; Rossen Atanassov. CSS Grid Layout Module Level 2. 2020年12月18日. CRD. URL: https://www.w3.org/TR/css-grid-2/
[CSS-INLINE-3]
Elika Etemad. CSS Inline Layout Module Level 3. 2024年12月18日. WD. URL: https://www.w3.org/TR/css-inline-3/
[CSS-LOGICAL-1]
Rossen Atanassov; Elika Etemad. CSS Logical Properties and Values Level 1. 2018年8月27日. WD. URL: https://www.w3.org/TR/css-logical-1/
[CSS-MULTICOL-1]
Florian Rivoal; Rachel Andrew. CSS Multi-column Layout Module Level 1. 2024年5月16日. CR. URL: https://www.w3.org/TR/css-multicol-1/
[CSS-MULTICOL-2]
Florian Rivoal; Rachel Andrew. CSS Multi-column Layout Module Level 2. 2024年12月19日. FPWD. URL: https://www.w3.org/TR/css-multicol-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. 2025年3月11日. WD. URL: https://www.w3.org/TR/css-position-3/
[CSS-SIZING-3]
Tab Atkins Jr.; Elika Etemad. CSS Box Sizing Module Level 3. 2021年12月17日. WD. URL: https://www.w3.org/TR/css-sizing-3/
[CSS-SIZING-4]
Tab Atkins Jr.; Elika Etemad; Jen Simmons. CSS Box Sizing Module Level 4. 2021年5月20日. WD. URL: https://www.w3.org/TR/css-sizing-4/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii; Florian Rivoal. CSS Text Module Level 3. 2024年9月30日. CRD. URL: https://www.w3.org/TR/css-text-3/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 2024年3月22日. CRD. 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-3]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 3. 2019年12月10日. REC. URL: https://www.w3.org/TR/css-writing-modes-3/
[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/
[CSS2]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS21/
[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
[SELECTORS-3]
Tantek Çelik; et al. Selectors Level 3. 2018年11月6日. REC. URL: https://www.w3.org/TR/selectors-3/
[SOURCEMAP]
Source map format specification. Editor's Draft. URL: https://tc39.es/source-map/

参考情報文献

[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 3. 2018年12月4日. CR. URL: https://www.w3.org/TR/css-break-3/
[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/
[CSSOM-1]
Daniel Glazman; Emilio Cobos Álvarez. CSS Object Model (CSSOM). 2021年8月26日. WD. URL: https://www.w3.org/TR/cssom-1/

プロパティ一覧

プロパティ名 初期値 適用対象 継承 パーセンテージ アニメーション型 正規順序 算出値
align-content normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> normal ブロックコンテナー, マルチカラムコンテナー, フレックスコンテナー, グリッドコンテナー no n/a 離散型 文法順 指定キーワード
align-items normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ] normal すべての要素 no n/a 離散型 文法順 指定キーワード
align-self auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position> auto フレックスアイテム, グリッドアイテム, 絶対配置ボックス no n/a 離散型 文法順 指定キーワード
column-gap normal | <length-percentage [0,∞]> normal マルチカラムコンテナー, フレックスコンテナー, グリッドコンテナー no see 算出値型 文法順 指定キーワード、または算出<length-percentage>値
gap <'row-gap'> <'column-gap'>? 各個別プロパティ参照 マルチカラムコンテナー, フレックスコンテナー, グリッドコンテナー no コンテンツ領域の該当寸法参照 算出値型 文法順 各個別プロパティ参照
justify-content normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] normal マルチカラムコンテナー, フレックスコンテナー, グリッドコンテナー no n/a 離散型 文法順 指定キーワード
justify-items normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ] legacy すべての要素 no n/a 離散型 文法順 指定キーワード(legacyの場合は注釈参照)
justify-self auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] auto ブロックレベルボックス, 絶対配置ボックス, グリッドアイテム no n/a 離散型 文法順 指定キーワード
place-content <'align-content'> <'justify-content'>? normal ブロックコンテナー, フレックスコンテナー, グリッドコンテナー no n/a 離散型 文法順 各個別プロパティ参照
place-items <'align-items'> <'justify-items'>? 各個別プロパティ参照 すべての要素 no n/a 離散型 文法順 各個別プロパティ参照
place-self <'align-self'> <'justify-self'>? auto ブロックレベルボックス, 絶対配置ボックス, グリッドアイテム no n/a 離散型 文法順 各個別プロパティ参照
row-gap normal | <length-percentage [0,∞]> normal マルチカラムコンテナー, フレックスコンテナー, グリッドコンテナー no see 算出値型 文法順 指定キーワード、または算出<length-percentage>値

課題索引

「start」と「end」が直交フローでどう二軸的に働くかを分かりやすくする。
ここに例画像を追加すること。
「スマート」なデフォルト挙動の実装がWeb互換性上問題となる可能性がある(そうは思わないが、可能性はある)。 UAはこの点に関するフィードバックをWGに送るべき。 「スマート」なデフォルト挙動を実装していないUAは、safeとしてalign-contentblock containersに対して適用し、その他はunsafeとすること。
この画像も置き換えること。