CSS 表示モジュール レベル 3

W3C 勧告候補草案,

この文書についての詳細
このバージョン:
https://www.w3.org/TR/2026/CRD-css-display-3-20260605/
最新公開バージョン:
https://www.w3.org/TR/css-display-3/
編集者草案:
https://drafts.csswg.org/css-display/
以前のバージョン:
履歴:
https://www.w3.org/standards/history/css-display-3/
実装報告:
https://wpt.fyi/results/css/css-display?label=master&label=experimental&aligned
フィードバック:
CSSWG 課題リポジトリ
編集者:
Tab Atkins Jr. (Google)
Elika J. Etemad / fantasai (Apple)
この仕様への編集を提案:
GitHub エディター
テストスイート:
https://wpt.fyi/results/css/css-display/

概要

このモジュールは、文書要素ツリーから CSS 整形ボックスツリーがどのように生成されるかを説明し、 それを制御する display プロパティを定義する。

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

この文書のステータス

このセクションは、公開時点におけるこの文書のステータスを説明する。 現在の W3C 公開物 およびこの技術報告書の最新版の一覧は、 W3C 標準および草案索引で確認できる。

この文書は、 CSS ワーキンググループにより、 勧告 トラックを用いて 勧告候補草案として公開された。 勧告候補としての公開は、 W3C およびそのメンバーによる承認を意味しない。 勧告候補草案は、 ワーキンググループが後続の勧告候補スナップショットに含める意図のある、 前回の勧告候補からの変更を統合するものである。

これは草案文書であり、 いつでも他の文書によって更新、置換、 または廃止される可能性がある。 作業中のもの以外としてこの文書を引用することは適切ではない。

フィードバックは、 GitHub で issue を提出すること(推奨)により送付されたい。 その際、タイトルには次のように仕様コード “css-display” を含めること: “[css-display] …コメントの要約…”。 すべての issue およびコメントはアーカイブされる。 あるいは、フィードバックを(アーカイブ済みの)公開メーリングリスト www-style@w3.orgへ送ることもできる。

この文書は、 2025年8月18日版 W3C プロセス 文書に準拠する。

この文書は、 W3C 特許方針の下で運営されるグループによって作成された。 W3C は、そのグループの成果物に関連して行われた 特許開示の公開リストを維持している。 そのページには特許を開示するための手順も含まれている。 個人が、当該個人が 必須請求項を含むと考える特許について実際の知識を有する場合、 その情報を W3C 特許 方針のセクション 6に従って開示しなければならない。

予備的な実装 報告が利用可能である。CR 期間中にさらにテストが追加される予定である。

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

“リスクあり” は W3C プロセス上の専門用語であり、その機能が必ずしも削除または遅延の危険にあることを 意味しない。これは、WG がその機能を適時に相互運用可能な形で実装することが困難である可能性があると 考えていることを意味し、そのように印を付けることで、Proposed Rec 段階へ移行する際に必要であれば その機能を削除できるようにする。これにより、その機能を含まない新しい Candidate Rec を先に公開する 必要がなくなる。

1. 序論

このセクションは規範的である。

CSS は、 ツリー をなす 要素 (他の 要素テキストノードを混在して含められる) および テキストノード (テキストを含められる)として構成されたソース文書を受け取り、 それを画面、紙片、または音声ストリームのような キャンバス上に描画する。 そのようなソース文書はいずれも CSS により描画できるが、 最も一般的に用いられる型は DOM である。[DOM] (これらのより複雑なツリー型の一部には、 DOM におけるコメントノードのように、追加の種類のノードがあり得る。 CSS の目的においては、 これらの追加の種類のノードはすべて、 存在しないかのように無視される。)

これを行うため、CSS は中間構造である ボックスツリーを生成する。 これは描画される文書の整形構造を表す。 ボックスツリー内の各 ボックス は、 キャンバス上の空間および/または時間において対応する 要素(または 疑似要素)を表し、 一方、ボックスツリー内の各 テキスト列 も同様に、 対応する テキストノードの内容を表す。

ボックスツリーを作成するため、 CSS はまず カスケードと継承を用いて、 ソースツリー内の各 要素 および テキストノードに対して、 各 CSS プロパティの 算出値を割り当てる。 ([CSS-CASCADE-3] を参照。)

次に、各 要素について、 CSS はその要素の display プロパティで指定されるとおりに、 0 個以上の ボックスを生成する。 通常、要素は単一の ボックス、 すなわち 主ボックスを生成し、 それは ボックスツリー内で自身を表し、その内容を含む。 しかし、一部の display 値 (例: display: list-item)は 複数のボックス (例: 主ブロックボックスと子の マーカーボックス)を生成する。 また、一部の値 (nonecontents など)は、 要素および/またはその子孫に ボックスをまったく生成させない。 ボックスは、その display 型によって言及されることが多い—​例えば display: block を持つ要素によって生成される ボックスは “ブロックボックス” または単に “ブロック” と呼ばれる。

ボックスには、別途示されない限り、 それを生成する 要素と同じスタイルが割り当てられる。 一般に、継承プロパティ主ボックスに割り当てられ、 その後ボックスツリーを通じて、 同じ要素によって生成された他のすべてのボックスへ継承される。 非継承プロパティは既定で 主ボックスに適用されるが、 要素が複数のボックスを生成する場合、 別のボックスに適用されるよう定義されることがある: 例えば、テーブル要素に適用される border プロパティは、 その テーブル ラッパーボックスではなく、 テーブルグリッドボックスに適用される。 値の算出処理がそれらのボックスのスタイルを変更し、 要素のスタイルが (getComputedStyle() などを通じて) 要求された場合、 その要素は、 各プロパティについて、 そのプロパティが適用されたボックスからの値を反映する。

同様に、兄弟である連続した テキストノードの各列は、 そのテキスト内容を含む テキスト列を生成し、 それを生成する テキストノードと同じスタイルが割り当てられる。 ただし、その列にテキストが含まれない場合は、 テキスト列を生成しない。

ボックスツリーを構築する際、 要素によって生成されるボックスは、 いずれかの祖先要素の主ボックスの子孫となる。 一般的な場合、 要素の 主ボックスの直接の 親ボックス は、ボックスを生成する最も近い祖先要素の 主ボックスである。 しかし、いくつかの例外があり、 例えば run-in ボックス、 複数のコンテナボックスを生成する表示型(テーブルなど)、 および介在する 匿名ボックスがある。

匿名ボックスは、いかなる要素にも関連付けられていないボックスである。 匿名ボックスは、 特定の状況において、 ボックスツリーが、 要素ツリーから生成されるボックスによって提供されない 特定の入れ子構造を必要とする場合に、それを補正するため生成される。 例えば、テーブルセルボックスは、 特定の種類の親ボックス(テーブル行ボックス)を必要とし、 その親が テーブル行ボックスでない場合には、 自身の周囲に 匿名テーブル行ボックスを生成する。 ([CSS2] § 17.2.1 を参照。) スタイルが厳密に要素ツリーを通じて継承される、要素から生成されるボックスとは異なり、 匿名ボックス(ボックスツリー内にのみ存在する)は、 継承を、それらの ボックスツリー上の親子関係を通じて行う。

レイアウトの過程で、 ボックスおよび テキスト列は、複数の 断片に分割されることがある。 これは、例えば インライン ボックスおよび/または テキスト列が 行をまたいで分割される場合、 または ブロックボックスが ページや段をまたいで分割される場合に起こり、 この処理は 断片化と呼ばれる。 また、テキストの bidi 並べ替え (CSS Writing Modes双方向並べ替え アルゴリズムの適用を参照) や、より高次の 表示型の ボックス分割、 例: block-in-inline 分割CSS2§9.2 を参照) または column-spanner-in-block 分割 (CSS Multi-column Layout を参照) によっても起こり得る。 したがって、ボックスは 1 つ以上の ボックス断片から構成され、 テキスト列は 1 つ以上の テキスト断片から構成される。 断片化の詳細については [CSS-BREAK-3] を参照。

注: CSS 仕様の多くは、この用語体系が整えられる前に 書かれたものであるか、 物事を誤って参照しているため、 古い仕様がこれらの用語を使っている場合は注意して読むこと。 文脈から、それらが実際にはどの用語を意味しているかを推測できるはずである。 誤りを見つけた場合は、修正できるように仕様内の 誤りを報告されたい。

注: “聴覚” ボックスツリー およびそれと display プロパティとの相互作用に関する追加情報は、 CSS Speech Module にある。 [CSS-SPEECH-1]

テスト

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

このモジュールは、[CSS2] セクション 9.2.4 で定義されている display プロパティの定義を置き換え、拡張する。

このモジュール内のプロパティはいずれも、::first-line または ::first-letter 疑似要素には適用されない。

テスト

1.2. 値の定義

この仕様は、[CSS2] 由来の CSS プロパティ定義の慣例に従い、 [CSS-VALUES-3] 由来の 値定義構文を用いる。 この仕様で定義されない値型は、CSS Values & Units [CSS-VALUES-3] で定義される。 他の CSS モジュールとの組み合わせにより、これらの値型の定義は拡張されることがある。

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

2. ボックスレイアウトモード: display プロパティ

名前: display
値: [ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>
初期値: inline
適用対象: すべての要素
継承: しない
パーセンテージ: 該当なし
算出値: 内側および外側表示型を表すキーワードの組、 それに任意の list-item フラグを加えたもの、 または <display-internal> もしくは <display-box> キーワード。 算出規則については各種仕様の本文を参照
正準順序: 文法に従う
アニメーション型: アニメーション不可

ユーザーエージェントは、非視覚的なものを含むすべての媒体でこのプロパティをサポートすることが期待される。 display プロパティは、要素の 表示型を定義する。 これは、要素がどのようにボックスを生成するかについての 2 つの基本的性質から成る:

テキスト列表示型を持たない。

一部の display 値には追加の副作用がある: 例えば list-item::marker 疑似要素も生成し、 none は要素のサブツリー全体をボックスツリーから除外させる。

display プロパティは、要素の意味論には影響を与えない: それらは 文書言語によって定義され、CSS の影響を受けない。 要素およびその子孫の聴覚/音声出力 [CSS-SPEECH-1] と対話性にも影響する none 値を除き、 display プロパティは視覚的な レイアウトにのみ影響する: その目的は、設計者が基礎となる文書の意味論に影響を与えることなく、 要素のレイアウト挙動を変更できる自由を与えることである。

値は次のように定義される:

<display-outside>  = block | inline | run-in
<display-inside>   = flow | flow-root | table | flex | grid | ruby
<display-listitem> = <display-outside>? && [ flow | flow-root ]? && list-item
<display-internal> = table-row-group | table-header-group |
                     table-footer-group | table-row | table-cell |
                     table-column-group | table-column | table-caption |
                     ruby-base | ruby-text | ruby-base-container |
                     ruby-text-container
<display-box>      = contents | none
<display-legacy>   = inline-block | inline-table | inline-flex | inline-grid

次の参考表は、display の値を要約する:

短縮 display 完全 display 生成されるボックス
none ボックス ツリーからサブツリーが省略される
contents ボックスツリー内で要素が内容に置き換えられる
block block flow ブロックレベルブロック コンテナ 別名 ブロックボックス
flow-root block flow-root 新たな ブロック整形文脈BFC)を確立する ブロックレベルブロック コンテナ
inline inline flow インラインボックス
inline-block inline flow-root インラインレベルブロック コンテナ 別名 インラインブロック
run-in run-in flow run-in ボックス(特別な ボックスツリー調整規則を持つインラインボックス
list-item block flow list-item 追加の マーカーボックスを伴う ブロックボックス
inline list-item inline flow list-item 追加の マーカーボックスを伴う インラインボックス
flex block flex ブロックレベルフレックスコンテナ
inline-flex inline flex インラインレベルフレックスコンテナ
grid block grid ブロックレベルグリッドコンテナ
inline-grid inline grid インラインレベルグリッドコンテナ
ruby inline ruby インラインレベルルビコンテナ
block ruby block ruby ブロックボックスであり、 ルビコンテナを含む
table block table ブロックレベルテーブルラッパーボックスであり、テーブル グリッドボックスを含む
inline-table inline table インラインレベルテーブルラッパーボックスであり、テーブル グリッドボックスを含む
<display-internal>レイアウト固有の内部ボックス

注: “最も後方互換性があり、その次に最短”という 優先規則に従い、 等価な display 値の直列化には “短縮 display” 列が用いられる。 [CSSOM]

テスト

2.1. フローレイアウトにおける外側表示ロール: blockinline、 および run-in キーワード

<display-outside> キーワードは、要素の 外側表示型を指定する。 これは本質的に、フロー レイアウトにおける、その 主 ボックスの役割である。 それらは次のように定義される:

block
要素は、フロー レイアウト内に置かれたとき ブロックレベル であるボックスを生成する。[CSS2]
inline
要素は、フロー レイアウト内に置かれたとき インラインレベル であるボックスを生成する。[CSS2]
run-in
要素は run-in ボックスを生成する。 これは、後続のブロックコンテナへ併合しようとする特別な挙動を持つ インラインレベルボックスの一種である。 詳細は § 5 Run-In レイアウトを参照。

注: 外側表示型は、置換要素に影響する。

<display-outside> 値が指定されているが、<display-inside> が省略されている場合、 要素の 内側 表示型flow になる。

テスト

2.2. 内側表示レイアウトモデル: flowflow-roottableflexgrid、および ruby キーワード

<display-inside> キーワードは、要素の 内側表示型を指定する。 これは、その内容をレイアウトする整形文脈の型を定義する (それが 置換されない要素であると仮定する)。 それらは次のように定義される:

flow
要素は、その内容を フローレイアウトブロックおよびインラインレイアウト)を用いてレイアウトする。

その 外側 表示型inline または run-in であり、 かつ、それが ブロック または インライン 整形文脈に参加している場合、 それは インライン ボックスを生成する。

それ以外の場合、それは ブロックコンテナボックスを生成する。

他のプロパティの値(例えば positionfloat、または overflow など) および、それ自身がブロックまたはインラインの 整形文脈に参加しているかどうかに応じて、 それは、その内容のために新たな ブロック整形文脈を確立するか、 またはその内容を親の 整形 文脈に統合する。 CSS2.1 第 9 章を参照。[CSS2] 新たな ブロック整形文脈を確立する ブロックコンテナは、 使用 内側表示型として flow-root を持つとみなされる。

flow-root
要素は ブロックコンテナボックスを生成し、 その内容を フローレイアウトを用いてレイアウトする。 それは常に、その内容のために新たな ブロック整形文脈を確立する。[CSS2]
table
要素は、ブロック整形文脈を確立する、主たる テーブル ラッパーボックスを生成し、 それは、追加で生成される テーブルグリッド ボックスを含み、 そのボックスは テーブル整形文脈を確立する。[CSS2]
flex
要素は主たる フレックス コンテナボックスを生成し、 フレックス整形文脈を確立する。[CSS-FLEXBOX-1]
grid
要素は主たる グリッド コンテナボックスを生成し、 グリッド整形文脈を確立する。[CSS-GRID-1]

subgrid を用いるグリッドは、新たな グリッド整形文脈を生成しないことがある。 詳細は [CSS-GRID-2] を参照。)

ruby
要素は ルビコンテナボックスを生成し、 ルビ整形文脈を確立する。 それに加えて、その基底レベルの内容を 親の 整形文脈へ統合する (それがインラインである場合)、 または適切な 外側表示型のラッパーボックスを生成する (それがインラインでない場合)。[CSS-RUBY-1]

<display-inside> 値が指定されているが、<display-outside> が省略されている場合、 要素の 外側 表示型は既定で block になる—​ただし ruby は例外で、既定で inline になる。

テスト

2.3. マーカーボックスの生成: list-item キーワード

list-item キーワードは、 その list-style プロパティで指定される内容を持つ ::marker 疑似要素 [CSS-PSEUDO-4]CSS 2.1§12.5 Lists[CSS2] を、その自身の内容のための指定された型の主ボックスとともに、要素に生成させる。

内側表示 型値が指定されていない場合、 主ボックスの 内側表示型は既定で flow になる。 外側表示 型値が指定されていない場合、 主ボックスの 外側表示型は既定で block になる。

注: このレベルでは、文法で制限されているとおり、 list-item は フロー レイアウト表示型 (block/inline/run-inflow/flow-root 内側型)に限定される。 この制限は、このモジュールの将来のレベルで緩和される可能性がある。

テスト

2.4. レイアウト内部表示型: table-* および ruby-* キーワード

tableruby のような一部のレイアウトモデルは、 子および子孫が担うことのできる複数の異なる役割を備えた、 複雑な内部構造を持つ。 このセクションは、そのような “レイアウト内部display 値を定義する。 これらは、その特定のレイアウトモード内でのみ意味を持つ。

別途指定されない限り、 これらの display 値を用いる要素の 内側表示 型外側表示型は、 どちらも与えられたキーワードに設定される。

置換要素display プロパティが レイアウト内部 値のいずれかに算出される場合、 それは使用値として inline を持つものとして扱われる。 空白の畳み込みおよび匿名ボックス生成は、 それらの置換要素の周囲でその inline 値に基づいて行われなければならない。 それらに レイアウト内部表示値が適用されたことが ないかのように扱う。

作者は レイアウト内部表示値を 置換要素に割り当てるべきではない。

<display-internal> キーワードは次のように定義される:

table-row-group, table-header-group, table-footer-group, table-row, table-cell, table-column-group, table-column
要素は 内部テーブル要素である。 それは、テーブル整形文脈に参加する適切な 内部テーブルボックスを生成する。 CSS2§17.2 [CSS2]を参照。

table-cell ボックスは、flow-root 内側表示型を持つ。

table-caption
要素は テーブルキャプションボックスを生成する。 これは、テーブルおよびテーブルラッパーボックスに関して特別な挙動を持つ ブロックボックスである。 CSS2§17.2 [CSS2]を参照。

table-caption ボックスは、flow-root 内側表示型を持つ。

ruby-base, ruby-text, ruby-base-container, ruby-text-container
要素は 内部ルビ要素である。 それは、ルビ整形文脈に参加する適切な 内部ルビボックスを生成する。[CSS-RUBY-1]

ruby-base および ruby-text は、flow 内側表示型を持つ。

レイアウト固有の表示型を持つボックスは、 互換性のない親内に配置された場合、 それぞれの仕様で定義されるように、自身の周囲に匿名ラッパーボックスを生成する。

例えば、テーブルレイアウトは、table-cell ボックスが table-row 親ボックスを持つことを要求する。

次のように親が誤っている場合:

<div style="display:block;">
  <div style="display:table-cell">...</div>
</div>

それは自身の周囲にラッパーボックスを生成し、 次のような構造を生成する:

ブロックボックス
└匿名テーブルボックス
 └匿名 table-row-group ボックス
  └匿名 table-row ボックス
   └table-cell ボックス

親が別の 内部テーブル要素であっても、 それが正しいものでない場合、 ラッパーボックスは生成される。 例えば、次のマークアップでは:

<div style="display:table;">
  <div style="display:table-row">
    <div style="display:table-cell">...</div>
  </div>
</div>

匿名ラッパーボックス生成は次を生成する:

table ボックス
└匿名 table-row-group ボックス
 └table-row ボックス
  └table-cell ボックス

この「修正」は、テーブルレイアウトが処理するための予測可能な構造を持つことを保証する。

テスト

このセクションにはテストがない。


2.5. ボックス生成: none および contents キーワード

display は、要素が生成するボックスのを制御できる一方で、 要素がそもそもボックスを生成するかどうかも制御できる。

<display-box> キーワードは次のように定義される:

contents
要素自身はいかなるボックスも生成しないが、 その子および疑似要素は通常どおり ボックスおよび テキスト列を生成する。 ボックス生成およびレイアウトの目的において、 その要素は、要素ツリー内で、 その内容によって置き換えられたかのように扱われなければならない (ソース文書の子と疑似要素の両方を含む。 例えば ::before および ::after 疑似要素などで、 これらは通常どおり要素の子の前/後に生成される)。

注: 影響を受けるのはボックスツリーのみであるため、 セレクタ照合、イベント処理、 およびプロパティの 継承のような、 文書ツリーに基づく意味論はいずれも影響を受けない。 しかし執筆時点では、 これは主要ブラウザーで正しく実装されていないため、 Web 上でこの機能を用いる場合は注意して行わなければならない。 これはアクセシビリティツールが 要素の意味論にアクセスすることを妨げる可能性があるためである。

この値は、置換要素およびレンダリングが CSS によって完全には制御されない他の要素では display: none に算出される。 詳細は 付録 B: 特殊な要素に対する display: contents の効果を参照。

注: 置換要素およびフォームコントロールは 特別に扱われる。 要素自身が生成するボックスだけを取り除くことは、 多かれ少なかれ未定義の操作であるためである。 この挙動は、ユースケース (およびより精密なレンダリングモデル)が発展すれば洗練される可能性があるため、 作者は前方互換性のため、そのような要素では display: contents ではなく display: none を用いるべきである。

none
要素およびその子孫は、 ボックステキスト列も生成しない。

同様に、テキストノードdisplay: none として振る舞うよう定義されている場合、 それは テキスト列を生成しない。

これらの値のいずれかを持つ要素は、内側または 外側表示型を持たない。 なぜなら、それらはそもそもいかなるボックスも生成しないためである。

注: これらの値は、影響を受ける要素にボックスを生成させないため、 匿名ボックス生成規則は省略された要素を完全に無視し、 それらがボックスツリー内に存在しないかのように扱う。

しかし、マークアップに基づく関係はこれらの値の影響を受けない。 それらは純粋にレンダリング時の効果であるためである。 例えば、 それらはどのテーブルセルが列に見えるかに影響し得るものの、 特定の列要素に関連付けられるテーブルセルには影響しない。 同様に、それらはどの HTML summary 要素が特定のテーブルに関連付けられるか、 または legend が特定の fieldset の内容をラベル付けしているとみなされるかには影響できない。

テスト

2.6. 合成済みインラインレベル表示値

CSS レベル 2 は、display に単一キーワード構文を用い、 同じレイアウトモードのブロックレベル版とインラインレベル版に別々のキーワードを必要としていた。 これらの <display-legacy> キーワードは次のように対応付けられる:

inline-block
inline flow-root に算出される。
inline-table
inline table に算出される。
inline-flex
inline flex に算出される。
inline-grid
inline grid に算出される。

注: これらのキーワードとその等価な値は 同じ値に算出されるが、 それらの 指定値は区別されたままである。

注: getComputedStyle() の直列化規則は、 最短で、最も後方互換性のある 直列化原則により、 等価な 2 キーワードの組ではなく、 常にこれらの合成済みキーワードを出力する。

テスト

このセクションにはテストがない。


2.7. 自動ボックス型変換

一部のレイアウト効果は、ボックス型の ブロック化 または インライン化を必要とする。 これはボックスの 算出 外側表示型block または inline(それぞれ)に設定する。 (これは、表示型のうち、 nonecontents のように、 そもそもボックスを生成しないものには影響しない。) さらに:

注: ボックスが自身の文脈に適合しない場合に ボックス型を修正するために用いられる方法は 2 つある。 1 つは、ここで説明した ブロック化インライン化のような、 display算出値の変換である。 もう 1 つは、ボックスツリー構築中(算出値が決定された後)に行われる、 中間的な匿名ボックスの作成である。 これは テーブルルビ、 および フローレイアウトで起こるようなものである。

算出値修正の例には次のようなものがある:

2.8. ルート要素の主ボックス

ルート要素の表示型は 常に ブロック化され、 その 主ボックスは常に 独立整形文脈を確立する。 このボックスの 包含 ブロック初期包含ブロックである。

さらに、ルート要素上の displaycontents は、block に算出される。

3. 表示順序: order プロパティ

名前: order
値: <integer>
初期値: 0
適用対象: フレックスアイテムおよび グリッドアイテム
継承: しない
パーセンテージ: 該当なし
算出値: 指定された整数
正準順序: 文法に従う
アニメーション型: 算出値の型による
テスト

ボックスは一般に、ソース文書内に現れるのと同じ順序で 表示され、レイアウトされる。 一部の 整形 文脈では、 order プロパティを用いてボックスの順序を並べ替え、 要素の論理順序と、 2D 視覚キャンバス上での空間的配置との不一致を 意図的に作り出すことができる。 (§ 3.1 並べ替えとアクセシビリティを参照。)

具体的には、 order プロパティは、 フレックス アイテムまたは グリッドアイテムが、 順序グループに割り当てられることにより、 それらのコンテナ内で現れる順序を制御する。 これは単一の <integer> 値を取り、 そのアイテムがどの順序グループに属するかを指定する。

これは、タイトル、写真、説明を持つカタログ項目カードの例である。 各項目内では、ソース文書の内容は論理的に、 まずタイトル、続いて説明と写真の順に並べられている。 これにより、音声レンダリングや非 CSS ブラウザーにとって適切な順序が提供される。 しかし、より魅力的な視覚表現のために、 order を用いて、内容の後方にある画像をカードの先頭へ引き上げている。
article.sale-item {
  display: flex;
  flex-flow: column;
}
article.sale-item > img {
  order: -1; /* 画像を他の内容より前へ移動する(レイアウト順で) */
  align-self: center;
}
<article class="sale-item">
  <h3>コンピューター入門キット</h3>
  <p>これは、あまりお金がないなら、お金で買える最高のコンピューターである。
  <ul>
    <li>コンピューター
    <li>モニター
    <li>キーボード
    <li>マウス
  </ul>
  <img src="images/computer.jpg"
    alt="入手できるもの: 白いデスクトップコンピューターと、それに合う周辺機器。"
    width="250" height="188">
</article>
入手できるもの: 白いデスクトップコンピューターと、それに合うキーボードおよびモニター。

コンピューター入門キット

これは、お金で買える最高のコンピューターである。 あまりお金がないなら。

  • コンピューター
  • モニター
  • キーボード
  • マウス
上記コードのレンダリング例。

Flex および グリッドコンテナは、 その内容を order 修正済み文書順でレイアウトする。 最も小さい番号の順序グループから始めて上がっていく。 同じ順序グループを持つアイテムは、ソース文書に現れる順序でレイアウトされる。 これは 描画順序 [CSS2]にも影響する。 あたかも flex/grid アイテムが ソース文書内で並べ替えられたかのように扱われる。 flex/グリッドコンテナの絶対配置された子は、 flex/grid アイテムに対する描画順序を 決定する目的では、order: 0 を持つものとして扱われる。

将来の仕様によって別途指定されない限り、 このプロパティは フレックスアイテムまたは グリッド アイテムでないボックスには影響しない。

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

order プロパティは、非視覚媒体 (音声など)における順序には 影響しない。 同様に、order は、 逐次ナビゲーションモードの既定の巡回順序 (リンクを順にたどる場合など。例えば tabindex [HTML]を参照)にも影響しない。

作者は、内容の論理的な並べ替えではなく、空間的な並べ替えのためにのみ order を用いなければならない。 order を用いて論理的な並べ替えを行う スタイルシートは適合しない。

注: これは、通常は内容を線形に提示する非視覚媒体および 非 CSS UA が、論理的なソース順序に依存できるようにしつつ、 order がレイアウト順序の調整に用いられるようにするためである。 (視覚知覚は二次元かつ非線形であるため、 望ましいレイアウト順序が常に論理的であるとは限らない。)

すべての提示モードにおいて作者の意図した順序を保つために、 WYSIWYG エディターや Web ベースのオーサリング支援を含むオーサリングツールは、 下層の文書ソースを並べ替えなければならず、 作者が、空間的順序を (音声およびナビゲーション順序を決定する)下層の文書順序と 同期させないべきであると明示的に示した場合を除き、 並べ替えを行うために order を用いてはならない。

例えば、ツールはフレックスアイテムのドラッグアンドドロップによる並べ替えと、 画面サイズ範囲ごとの代替レイアウトのためのメディアクエリ処理の両方を提供するかもしれない。

ほとんどの場合、並べ替えはすべての画面範囲に加えて ナビゲーション順序および音声順序にも影響すべきなので、 ツールは DOM 層でドラッグアンドドロップによる並べ替えを行う。 しかし、場合によっては、作者が画面サイズごとに異なるレイアウトを望むことがある。 ツールは、order をメディアクエリとともに用いることで この機能を提供できるが、 最小の画面サイズにおける順序を下層の DOM 順序に結び付ける必要もある (これは論理的な線形提示順序である可能性が最も高いため)。 一方で他のサイズ範囲では、order を用いて 視覚的提示順序を定義する。

このツールは適合するが、ドラッグアンドドロップによる並べ替えを処理するために 常に order だけを用いる ツールは (実装上どれほど便利であっても) 適合しない。

注: ブラウザー、アクセシブル技術、拡張機能を含むユーザーエージェントは、 空間ナビゲーション機能を提供することがある。 このセクションは、そのような空間ナビゲーションモードにおける要素順序を決定する際に order プロパティを尊重することを妨げない。 実際、そのような機能が動作するためには考慮する必要があるだろう。 しかし、order は、 そのような空間ナビゲーション機能のために考慮する必要のある 唯一の(あるいは主要な)CSS プロパティではない。 適切に実装された空間ナビゲーション機能は、 空間的関係を変更する CSS のすべてのレイアウト機能を考慮する必要がある。

4. 不可視性: visibility プロパティ

名前: visibility
値: visible | hidden | collapse
初期値: visible
適用対象: すべての要素
継承: する
パーセンテージ: 該当なし
算出値: 指定どおり
正準順序: 文法に従う
アニメーション型: 離散
媒体: 視覚

visibility プロパティは、ボックスが描画されるかどうかを指定する。 不可視ボックスはなお レイアウトに影響する。 (ボックス生成そのものを抑止するには、display プロパティを none に設定する。)。 値は次の意味を持つ:

visible
生成されたボックスは通常どおり可視である。
hidden
要素によって生成されたすべてのボックスは 不可視になる。 ただし、要素の子孫は visibility: visible を持つ場合、 可視になり得る。
collapse
ボックスが 折りたたまれることを示す。 これは整形文脈固有の方法で、 通常より少ない空間を占める原因となり得る。 テーブルにおける動的な行および列の効果 [CSS2] および flex レイアウトにおける 折りたたまれたフレックスアイテム [CSS-FLEXBOX-1]を参照。 ただし、それ以外のすべての場合 (すなわち、別途指定されない限り)、 これは hidden と同様に、 単にボックスを 不可視にする。

注: 現在、多くのユーザーエージェントおよび/またはアクセシビリティ ツールは、 不可視要素と意味的関係を持つ可視要素に関する アクセシビリティ上の含意を正しく実装していない。 そのため、例えば、 特別なロールを持つ親要素(テーブル行など)を 不可視にしつつ、 特別なロールを持つ子要素(テーブルセルなど)を可視のままにすることは、 それらのツールのユーザーにとって問題となり得る。 作者は、ツールの状況が改善するまで、 このような状況を作り出すことを避けるべきである。

不可視ボックスは描画されず (完全に透明であるかのように)、 対話できず (pointer-events: none を持つかのように振る舞う)、 ナビゲーションから除去され (display: none と同様)、 音声にも描画されない (ただし speakalways である場合を除く [CSS-SPEECH-1])。 しかし、display: contents と同様に、 コンテナとしての意味的役割は影響を受けない。 これは、任意の 可視の子孫が 適切に解釈されることを保証するためである。

注: speakalways である場合、 それ以外では 不可視のボックスも 音声へ描画され、 非視覚的/空間的方法を用いて対話できることがある。

display: none で一時的に物を隠すことで十分な場合は多いが、 そうすると要素はレイアウトから完全に除去され、 要素が隠されたり表示されたりするときに、 ページの望ましくない移動やリフローを引き起こす可能性がある。 代わりに visibility: hidden を用いることで、 何かが隠されたり表示されたりしても、 ページのレイアウトを安定させておくことができる。

例えば、 以下は、隠されたテキストをクリックすることで明かせる “spoiler” 要素の(意図的に簡略化された)実装例である:

<p>映画の序盤の象徴性は終盤で明らかになる。
  そのとき、<spoiler-text><span>ルークは自分自身の父である</span></spoiler-text>ことが明かされ、
  魔法使いの謎めいたなぞなぞに意味が生まれる。
<style>
spoiler-text { border-bottom: 1px solid; }
spoiler-text > span { visibility: hidden; }
spoiler-text.shown > span { visibility: visible; }
</style>
<script>
[...document.querySelectorAll("spoiler-text")].forEach(el=>{
  el.addEventListener("click", e=>el.classList.toggle("shown"));
});
</script>

この例は意図的にかなり簡略化されている。 適切に設計された spoiler 要素が持つべき多くのアクセシビリティおよび UX 機能が欠けており、 visibility の使用をより明確に示すためのものである。 実際のサイトでこのコードをコピーしてはならない。

テスト

このセクションにはテストがない。


5. Run-In レイアウト

run-in ボックスは、 その後に来るブロックへ併合し、 そのブロックのインラインレベル内容の先頭に自身を挿入するボックスである。 これは、コンパクトな見出し、定義、その他類似のものを整形するのに有用である。 その場合、適切な DOM 構造は、後続の散文に先行して見出しを持つことだが、 望ましい表示は、その見出しをテキストとともにレイアウトされるインライン見出しにすることである。

例えば、辞書の定義はしばしば、語が定義と同じ行にあるように整形される:
<dl class='dict'>
  <dt>dictionary
  <dd>a book that lists the words of a language in alphabetical
      order and gives their meaning, or that gives the equivalent
      words in a different language.
  <dt>glossary
  <dd>an alphabetical list of terms or words found in or relating
      to a specific subject, text, or dialect, with explanations; a
      brief dictionary.
</dl>
<style>
.dict > dt {
  display: run-in;
}
.dict > dt::after {
  content: ": "
}
</style>

これは次のように整形される:

dictionary: a book that lists the words of a language
in alphabetical order and explains their meaning.

glossary: an alphabetical list of terms or words found
in or relating to a specific subject, text, or dialect,
with explanations; a brief dictionary.

run-in ボックスは、任意の他の インラインレベルボックスと まったく同じように振る舞うが、次の場合を除く:

run-in 列は、 連続する兄弟 run-in ボックスと、 その間に介在する 空白および/または フロー外ボックスの最大列である。

注: この記述は、フロー外ボックスが 2 つの run-in ボックスの間にある場合に親を付け替えられることを意味する。 別の選択肢としては、介在するフロー外ボックスを残しておくこと、 またはフロー外ボックスが前のボックスの run-in 化を妨げるようにすることもあり得る。 実装者および作者は、好ましい挙動がある場合には CSSWG に連絡することが推奨される。 これはいくぶん無作為に選ばれたものだからである。

この修正は、CSS2§9.2 で説明される 匿名ブロックおよびインラインボックス修正の前に起こり、 影響を受ける要素の 最初の 整形行の決定に影響する。 これは run-in 列が もともとボックスツリー内の最終位置にあったかのように扱われる。

注: 最も早い run-in は、その包含ブロックの 最初の整形行上の最初のテキストを表すため、 そのブロック要素に適用された ::first-letter 疑似要素は、 自身の内容の最初の文字ではなく、 run-in の最初の文字を選択する。

注: この run-in モデルは、 [CSS2] の以前の改訂で 提案されていたものとは少し異なる。

付録 A: 用語集

便宜のため、次の用語をここで定義する:

ルート要素
文書ツリーの根にある 要素。 DOM の下で生成される 文書ツリーでは、 これは 文書要素であり、 HTML では html 要素である。 [DOM] [HTML]
主ボックス
要素が 1 つ以上の ボックスを生成する場合、 そのうちの 1 つが 主 ボックスである。 これはその子孫ボックスおよび生成内容を含み、 さらに任意の位置決め方式に関与するボックスでもある。

一部の要素は主ボックスに加えて追加のボックスを生成することがある (例えば list-item 要素は、 追加のマーカーボックスを生成し、 table 要素は、 テーブルラッパーボックス と追加の テーブルグリッドボックスを生成する)。 これらの追加ボックスは主ボックスを基準に配置される。

インラインレベル
インラインレイアウトに参加する内容。 具体的には、インラインレベルボックスおよび テキスト列
ブロックレベル
ブロックレイアウトに参加する内容。 具体的には、ブロックレベルボックス。
インラインボックス
内側 表示型flow である、置換されない インラインレベル ボックス。 インラインボックスの内容は、インラインボックス自身と同じインライン整形文脈に参加する。
インライン
曖昧でない場合に、インライン ボックスまたは インラインレベルボックスの短縮表現として用いられる。 または インラインレベルを意味する形容詞として用いられる。 後者の用法は非推奨である。
不可分インライン
置換される(画像など)、 または新たな整形文脈を確立する(inline-blockinline-table など) インラインレベルボックスであり、 行をまたいで分割できないもの (インラインボックスルビコンテナは分割できる)。

内側表示型flow でないインラインレベルボックスはすべて、指定された 内側 表示型の新たな整形文脈を確立する。

ブロックコンテナ
ブロックコンテナは、 インライン整形文脈に参加するインラインレベルボックスのみを含むか、 または ブロック整形文脈に参加するブロックレベルボックスのみを含む (この制約を確保するために匿名ブロックボックスを生成することがあり、 これは CSS2§9.2.1.1 で定義される)。

インラインレベル内容のみを含むブロックコンテナは、 新たな インライン整形文脈を確立する。 その要素はさらに、 すべてのインライン内容を包む ルート インラインボックスを生成する。 注: この ルートインラインボックスの概念は、 CSS2§9.2.2.1 で導入された “匿名インライン要素” の概念を実質的に置き換える。

ブロックコンテナは、その親整形文脈が ブロック整形文脈でない場合、 新たな ブロック整形文脈を確立する。 そうでない場合、自身が ブロック整形 文脈に参加しているときは、 他のプロパティの制約 (overflowalign-content など)によって決まるとおり、 その内容のために新たな ブロック整形 文脈を確立するか、 または参加している文脈を継続する。

注: ブロックコンテナボックスは、 ブロック整形文脈とインライン整形文脈の両方を 同時に確立できる。

ブロックボックス
ブロックレベルボックスであり、 かつ ブロック コンテナでもあるもの。

注: すべての ブロックコンテナボックスが ブロックレベルボックスであるわけではない: 例えば、置換されない インライン ブロックや置換されないテーブルセルは、 ブロックコンテナであるが ブロックレベルボックスではない。 同様に、すべてのブロックレベルボックスがブロックコンテナであるわけではない: ブロックレベルの置換要素(display: block) やフレックスコンテナ(display: flex)などは、 ブロックコンテナではない。

ブロック
曖昧でない場合に、ブロックボックスブロックレベルボックス、または ブロックコンテナボックスの 短縮表現として用いられる。
置換要素
画像や埋め込み文書など、 その内容が CSS 整形モデルの範囲外にある要素。 例えば、HTML img 要素の内容は、 しばしばその src 属性が指定する画像によって置換される。

置換要素はしばしば 自然寸法を持つ。 例えば、ビットマップ画像は絶対単位で指定された自然幅と自然高を持つ (そこから自然比が明らかに決定できる)。 一方で、他のオブジェクトは自然寸法をまったく持たないことがある (例えば空の HTML 文書)。 [css-images-3]を参照。

ユーザーエージェントは、 置換要素が持つ 自然寸法が 第三者へ機微情報を漏らし得ると考えられる場合、 その置換要素を自然寸法を持たないものと見なしてもよい。 例えば、HTML 文書の自然サイズがユーザーの銀行残高に応じて変化する場合、 UA はそのリソースに 自然寸法がないかのように振る舞いたいかもしれない。

置換要素の内容は CSS 整形モデルにおいて考慮されない。 しかし、その 自然寸法は各種レイアウト計算で用いられる。 置換要素は常に 独立整形文脈を確立する。

非置換要素とは、 置換されない要素、 すなわちそのレンダリングが CSS モデルによって決定される要素である。

包含ブロック
それに関連付けられた ボックスの サイズ決定および位置決めの基礎となる矩形。 特に、包含 ブロックボックスではない (矩形である)が、 しばしば ボックスの寸法から導かれる。 各 ボックスには、それ自身の 包含ブロックを基準とした位置が与えられる。 しかし、それはこの 包含ブロックに閉じ込められるわけではなく、 オーバーフローし得る。 “a box’s containing block” という句は、 “そのボックスが存在する 包含ブロック” を意味し、 それが生成するものを意味しない。

一般に、ボックスは、 子孫ボックスの 包含ブロックとして機能する。 ボックスがその子孫のための 包含ブロックを “確立する” という。 包含ブロックのプロパティが参照される場合、 それらはその 包含ブロックを生成した ボックス上の値を参照する。 (初期包含ブロックについては、 別途指定されない限り、値はルート要素から取得される。)

詳細は [CSS2] セクション 9.1.2 および セクション 10.1 および CSS Positioned Layout 3 § 2.1 位置指定ボックスの包含ブロックを参照。

包含ブロック 連鎖
包含ブロック関係を通じて、 祖先子孫連鎖を形成する、 連続する 包含ブロックの列。 例えば、インラインボックスの 包含ブロックは、最も近い ブロックコンテナ祖先の内容ボックスである。 そのブロックコンテナが 通常フロー内ブロックであれば、 その包含ブロックは、その親 ブロック コンテナによって形成される。 その祖親の ブロックコンテナ絶対配置されている場合、 その包含ブロックは、最も近い位置指定祖先(必ずしも親ではない)のパディング辺であり、 以下、初期包含ブロックまで続く。
初期 包含ブロック
ルート 要素包含 ブロック初期包含ブロックブロック 整形文脈を確立し、 文書の 主書字モードを取る (CSS Writing Modes 4 § 8.1 初期包含ブロックへの伝播を参照)。 連続媒体では、 それは 小ビューポートサイズの寸法を持ち、 キャンバス原点に固定される。 ページ媒体では、その位置と寸法について [CSS-PAGE-3]を参照。
整形 文脈
整形 文脈とは、 関連するボックスの集合がレイアウトされる環境である。 異なる 整形文脈は、 異なる規則に従ってそのボックスをレイアウトする。 例えば、フレックス整形文脈は、 フレックスレイアウト 規則に従ってボックスをレイアウトする [CSS-FLEXBOX-1]。 一方、ブロック整形文脈は、 ブロックおよびインラインレイアウト規則に従ってボックスをレイアウトする [CSS2]。 さらに、いくつかの型の 整形文脈は 交錯し、共存する: 例えば、インライン整形文脈は、 それを確立する要素の ブロック整形文脈の中に存在し、 それと相互作用する。 また ルビコンテナは、その ルビベースコンテナが参加する インライン整形文脈の上に ルビ整形文脈を重ねる。

ボックスは新たな 独立整形文脈を確立するか、 その包含ブロックの 整形文脈を継続する。 場合によっては、 さらに新たな(独立でない)共存する整形文脈を確立することもある。 しかし、別途指定されない限り、 新たな 整形文脈を確立することは、 独立整形文脈を作成する。 ボックスによって確立される整形文脈の型は、 その 内側表示型によって決定される。 例えば、グリッドコンテナは新たな グリッド整形文脈を確立し、 ルビコンテナは新たな ルビ整形文脈を確立し、 ブロック コンテナは新たな ブロック整形文脈 および/または新たな インライン整形文脈を確立できる。 display プロパティを参照。

独立 整形文脈
ボックスが独立整形文脈を確立する場合 (その 整形文脈が親と同じ型であるか否かにかかわらず)、 それは本質的に、新たな独立したレイアウト環境を作成する: ボックス自身のサイズ決定を通じる場合を除き、 その子孫のレイアウトは(一般に)、 ボックスの外側の 整形文脈の 規則や内容によって影響を受けず、その逆も同様である。

例えば、ブロック整形文脈では、 浮動ボックスは周囲のボックスのレイアウトに影響する。 しかし、その効果は自身の 整形文脈から外へ出ない: それらの 整形文脈を確立するボックスは、 それらを完全に含むように成長し、 そのボックスの外側からの浮動は、 ボックス内の内容へ突き出して影響することを許されない。

別の例として、マージンは 整形文脈の境界を越えて相殺されない。

排除は、独立 整形文脈の境界を越えて内容に影響できる。 (執筆時点では、それが可能な唯一のレイアウト機能である。) [CSS3-EXCLUSIONS]

特定のプロパティは、 通常ならそうしない場合でも、ボックスに 独立整形文脈を確立することを強制できる。 例えば、 ボックスを フロー外にすると、 それは ブロック化されると同時に 独立整形 文脈を確立する。 別の例として、 contain プロパティの特定の値は、 ボックスに 独立 整形文脈を確立させることができる。 ブロックを スクロールコンテナに変えると、 それは 独立 整形文脈を確立する。 しかし subgridスクロール コンテナに変えてもそうはならない—​それは subgrid として振る舞い続け、 その内容は親の グリッド コンテナのレイアウトに参加する。

ブロックボックス独立整形 文脈を確立する場合、 その内容のために新たな ブロック整形文脈を確立する。 ほとんどの他の場合、 ボックスに 独立 整形文脈を確立することを強制しても何もしない—​そのボックスがすでに 独立整形文脈を確立している (例: フレックスコンテナ)か、 その型のボックスに完全に独立した新たな整形文脈を確立することが不可能 (例: 置換されない インライン ボックス)であるためである。

ブロック整形 文脈
インライン 整形文脈
ブロックおよび インライン整形 文脈は、 CSS 2.1 セクション 9.4で定義される。 インライン整形文脈は、 ブロック整形文脈内に存在する (それを含むものの一部である)。 例えば、インライン整形 文脈に属する行ボックスは、 ブロック整形 文脈に属する浮動と相互作用する。
ブロックレイアウト
ブロックレベル ボックスのレイアウトであり、 ブロック整形文脈内で行われる。
ブロック 整形文脈ルート
新たな ブロック整形文脈を確立する ブロックコンテナ
BFC
ブロック整形文脈または ブロック整形文脈ルートの略語。 内部の浮動を含み、外部の浮動を排除し、マージン相殺を抑止するボックスを指す さまざまな非公式な定義があり、 したがって特に次のいずれかを指し得る:
フロー外
通常フロー内
ボックスが、期待される位置および周囲の内容との相互作用から取り出され、 その親整形文脈内の通常の内容フローの外側で、 異なるパラダイムを用いてレイアウトされる場合、 そのボックスは フロー外である。 これは、ボックスが(float によって) 浮動される場合、または(position によって) 絶対配置される場合に起こる。 ボックスが フロー外でない場合、 そのボックスは 通常フロー内である。

注: 一部の 整形文脈は 浮動を抑止するため、 float: left を持つ要素が必ずしも フロー外であるとは限らない。

文書順序
ボックスまたは内容が文書内で現れる順序 (レンダリングで現れる順序とは異なることがある)。 疑似要素の相対順序を決定する目的では、 ボックスツリー順序が用いられる。 CSS Pseudo-Elements 4 § 4 ツリー準拠疑似要素を参照。

これらの用語のより完全な定義については、[CSS2] 第 9 章を参照。

付録 B: 特殊な要素に対する display: contents の効果

このセクションは(現在のところ)非規範的である。

一部の要素は、純粋に CSS ボックス概念によって描画されるわけではない。 例えば、置換要素( img など)、 多くのフォームコントロール( input など)、 および SVG 要素である。

この付録は、それらが display: contents とどのように相互作用するかを定義する。

HTML 要素

br
wbr
meter
progress
canvas
embed
object
audio
iframe
img
video
frame
frameset
input
textarea
select

display: contentsdisplay: none に算出される。

legend

HTML によれば、 display: contents を持つ legend描画される legendではないため、 魔法のような表示挙動を持たない。 (したがって、それは display: contents に 通常どおり反応する。)

button
details
fieldset

これらの要素には特別な挙動はない。 display: contents は単にそれらの 主ボックスを除去し、 それらの内容は通常どおり描画される。

その他任意の HTML 要素

display: contents について通常どおり振る舞う。

SVG 要素

CSS ボックスレイアウトを持つ svg 要素 (これには、親が HTML 要素であるすべての svg と、文書のルート要素が含まれる)

display: contentsdisplay: none に算出される。

それ以外のすべての SVG コンテナ要素で、かつ 描画可能要素でもあるもの
SVG テキスト内容子要素
use

display: contents は、その要素を整形ツリーから取り除き、 その内容を引き上げて、その場所に表示する。 これらの内容には、 use の shadow-DOM 内容が含まれる。

その他任意の SVG 要素

display: contentsdisplay: none に算出される。

ここでの意図は、 要素の内部の「レンダリング文脈」が その外部の文脈と異なる場合には常に、 display: none の挙動が適用される、ということである。 要素の子要素が その要素の親の有効な子にならない場合、 それらを単に整形ツリー内で引き上げることはできない。

例えば、SVG におけるテキスト内容およびテキスト整形要素には、 text 要素の文脈が必要である。 text を取り除くと、 その子テキスト内容および要素はもはや有効でなくなる。 そのため、text 上の display: contents は、 text 要素全体が描画されることを防ぐ。 対照的に、 tspan または textPath 内の有効な内容は、親のテキスト整形文脈内でも有効な内容であるため、 これらの要素には引き上げ挙動が適用される。

同様に、引き上げによって子が 非描画要素 (例えば、 pattern または symbol の内部にある図形)から 描画要素 (例えば、 svg の直接の子である図形)へ変換されることになる場合、 それはレンダリング文脈の無効な変更である。 したがって、決して描画されないコンテナ要素は display: contents によって「アンボックス化」できない。

要素が整形ツリーから取り除かれる場合、 その要素上の、レイアウトおよび視覚整形を制御する SVG 属性は、 内容を描画するときに無視される。 しかし、CSS プロパティへ対応付けられる SVG プレゼンテーション属性は、 値処理および継承に影響し続ける [CSS-CASCADE-3]; したがって、そのような属性は、 それらの子孫上のそのようなプロパティの値に影響することによって、 要素の子孫のレイアウトおよび視覚整形に影響し得る。

MathML 要素

すべての MathML 要素について、 display: contentsdisplay: none に算出される。

付録 C: 仕様作者のためのボックス構築ガイドライン

このセクションは、仕様作者向けの非規範的なガイダンスである。

謝辞

長年にわたり、ボックス生成の多様な詳細を分離しようと試みてきた多くの人々に感謝したい。 とりわけ Bert Bos には、 彼の最後の試みである display-modeldisplay-role はどこにも到達しなかったものの、 現在の仕様への下地を整えてくれたことに感謝する。 Anton Prowse には、 CSS2.1 第 9 章への容赦ない追及によって混沌から一定の秩序を引き出してくれたことに感謝する。 そして Oriol Brufau には、 この仕様における何十もの細かな区別や誤りを解きほぐしてくれたことに感謝する。 David Baron、Mats Palmgren、Ilya Streltsyn、 および Boris Zbarsky にも、フィードバックについて謝意を表する。

変更点

2023 年勧告候補スナップショット以降の変更点

2023 年 3 月 30 日の勧告候補 スナップショット以降の変更には、次が含まれる:

2020 年勧告候補以降の変更点

コメント処理状況が、 2020 年 5 月 19 日の勧告候補以降について 利用可能である。

2020 年 5 月 19 日の勧告候補 以降の変更には、次が含まれる:

2019 年勧告候補以降の変更点

2019 年 7 月 11 日の勧告候補 以降の変更には、次が含まれる:

2018 年 8 月 28 日の勧告候補 以降の変更には、次が含まれる:

勧告候補ステータス以前の変更点

コメント処理状況が利用可能である。

2018 年 4 月 20 日の作業草案以降の変更には、 次が含まれる:

2017 年 7 月 20 日の作業草案以降の変更には、 次が含まれる:

2017 年 1 月 26 日の作業草案以降の変更には、 次が含まれる:

コメント処理状況も利用可能である。

2015 年 10 月 15 日の作業草案以降の変更には、 次が含まれる:

2015 年 7 月 21 日の作業草案以降の変更には、 次が含まれる:

2014 年 9 月 11 日の作業草案以降の変更には、 次が含まれる:

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

この仕様は新たなプライバシー上の考慮事項を導入しない。

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

この仕様は新たなセキュリティ上の考慮事項を導入しない。

自己レビュー質問票

自己レビュー質問票: セキュリティとプライバシー: 考慮すべき質問に従う

  1. この仕様は個人識別情報を扱うか?

    いいえ。

  2. この仕様は高価値データを扱うか?

    いいえ。

  3. この仕様は、閲覧セッションをまたいで持続するオリジンの新たな状態を導入するか?

    いいえ。

  4. この仕様は、永続的なクロスオリジン状態を Web に公開するか?

    いいえ。

  5. この仕様は、オリジンが現在アクセスできないその他のデータを公開するか?

    いいえ。

  6. この仕様は、新しいスクリプト実行/読み込み機構を有効にするか?

    いいえ。

  7. この仕様は、オリジンがユーザーの位置情報にアクセスすることを許可するか?

    いいえ。

  8. この仕様は、オリジンがユーザーのデバイス上のセンサーにアクセスすることを許可するか?

    いいえ。

  9. この仕様は、オリジンがユーザーのローカルコンピューティング環境の側面にアクセスすることを許可するか?

    いいえ。

  10. この仕様は、オリジンが他のデバイスにアクセスすることを許可するか?

    いいえ。

  11. この仕様は、オリジンにユーザーエージェントのネイティブ UI への何らかの制御を許可するか?

    いいえ。

  12. この仕様は一時的な識別子を Web に公開するか?

    いいえ。

  13. この仕様はファーストパーティ文脈とサードパーティ文脈における挙動を区別するか?

    いいえ。

  14. この仕様はユーザーエージェントの “incognito” モードの文脈でどのように動作すべきか?

    違いはない。

  15. この仕様はユーザーのローカルデバイスにデータを永続化するか?

    いいえ。

  16. この仕様には “Security Considerations” および “Privacy Considerations” セクションがあるか?

    はい。

  17. この仕様は既定のセキュリティ特性を低下させることを許可するか?

    いいえ。

適合性

文書の慣例

適合要件は、 記述的な表明と 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" によって規範的テキストから分離される:

注: これは参考注である。

勧告文は、特別な注意を喚起するようにスタイル付けされた規範的セクションであり、 次のように <strong class="advisement"> によって他の規範的テキストから分離される: UA はアクセシブルな代替を提供しなければならない。

テスト

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


適合クラス

この仕様への適合性は、 3 つの適合クラスについて定義される:

スタイルシート
CSS スタイルシート
レンダラー
スタイルシートの意味を解釈し、 それらを用いる文書をレンダリングする UA
オーサリングツール
スタイルシートを書く UA

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

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

オーサリングツールは、 汎用 CSS 文法およびこのモジュール内の各機能の個別文法に従って 構文的に正しいスタイルシートを書き、 かつこのモジュールで説明されるスタイルシートのその他すべての適合要件を満たす場合、 この仕様に適合する。

部分実装

作者が前方互換な構文解析規則を利用して フォールバック値を割り当てられるようにするため、 CSS レンダラーは、使用可能なレベルのサポートを持たない at-rule、プロパティ、プロパティ値、キーワード、 およびその他の構文構造を無効として扱い (必要に応じて 無視) なければならない。 特に、ユーザーエージェントは、 単一の複数値プロパティ宣言内で、 サポートされないコンポーネント値を選択的に無視し、 サポートされる値を尊重してはならない: ある値が無効と見なされる場合 (サポートされない値はそうでなければならない)、 CSS は宣言全体を無視することを要求する。

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

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

非実験的実装

仕様が勧告候補段階に達すると、 非実験的実装が可能となり、実装者は仕様に従って正しく実装されていることを 示せる任意の CR レベル機能について、 接頭辞なしの実装をリリースすべきである。

CSS の実装間相互運用性を確立し維持するため、 CSS Working Group は、非実験的な CSS レンダラーに対し、 任意の CSS 機能の接頭辞なし実装をリリースする前に、 実装報告(および必要であればその実装報告に使用したテストケース)を W3C に提出することを要請する。 W3C に提出されたテストケースは、 CSS Working Group によるレビューおよび修正の対象となる。

テストケースおよび実装報告の提出に関する詳細情報は、 CSS Working Group の Web サイト https://www.w3.org/Style/CSS/Test/ で見つけることができる。 質問は public-css-testsuite@w3.org メーリングリスト宛てに行うべきである。

CR 終了基準

この仕様が勧告案へ進むためには、 各機能について少なくとも 2 つの独立した相互運用可能な実装が存在しなければならない。 各機能は異なる製品群によって実装されてもよく、 すべての機能が単一の製品で実装される必要はない。 この基準の目的において、以下の用語を定義する:

独立
各実装は異なる当事者によって開発されなければならず、 他の適格な実装で使用されるコードを共有、再利用、または派生してはならない。 この仕様の実装に関係しないコード部分は、 この要件から除外される。
相互運用可能
公式 CSS テストスイート内の対応するテストケースに合格すること、 または、実装が Web ブラウザーでない場合は等価なテストに合格すること。 相互運用性を主張するためにそのようなユーザーエージェント(UA)を用いる場合、 テストスイート内のすべての関連テストについて等価なテストが作成されるべきである。 さらに、そのような UA を用いて相互運用性を主張する場合には、 相互運用性の目的において、 それらの等価テストに同じ方法で合格できる 1 つ以上の追加 UA が存在しなければならない。 等価テストは、ピアレビューの目的で公開されなければならない。
実装
次を満たすユーザーエージェント:
  1. 仕様を実装している。
  2. 一般公開されている。その実装は出荷製品またはその他の公開版 (すなわち、ベータ版、プレビューリリース、または “nightly build”)であってよい。 非出荷製品のリリースは、 安定性を示すために、 少なくとも 1 か月間その機能を実装していなければならない。
  3. 実験的でない (すなわち、テストスイートに合格することを特に目的として設計され、 今後の通常利用を意図していないバージョンではない)。

仕様は少なくとも 6 か月間、勧告候補のままである。

索引

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

参照により定義される用語

参考文献

規範的参考文献

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSS Box Alignment Module Level 3. 30 January 2026. WD. URL: https://www.w3.org/TR/css-align-3/
[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 11 March 2024. CRD. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BOX-4]
Elika Etemad. CSS Box Model Module Level 4. 4 August 2024. WD. URL: https://www.w3.org/TR/css-box-4/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 3. 4 December 2018. CR. URL: https://www.w3.org/TR/css-break-3/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad. CSS Fragmentation Module Level 4. 18 December 2018. FPWD. URL: https://www.w3.org/TR/css-break-4/
[CSS-CASCADE-3]
Elika Etemad; Tab Atkins Jr.. CSS Cascading and Inheritance Level 3. 11 February 2021. REC. URL: https://www.w3.org/TR/css-cascade-3/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 13 January 2022. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-CONTAIN-2]
Tab Atkins Jr.; Florian Rivoal; Vladimir Levin. CSS Containment Module Level 2. 17 September 2022. WD. URL: https://www.w3.org/TR/css-contain-2/
[CSS-FLEXBOX-1]
Elika Etemad; Tab Atkins Jr.; Rossen Atanassov. CSS Flexible Box Layout Module Level 1. 14 October 2025. CRD. URL: https://www.w3.org/TR/css-flexbox-1/
[CSS-GRID-1]
Tab Atkins Jr.; et al. CSS Grid Layout Module Level 1. 26 March 2025. CRD. URL: https://www.w3.org/TR/css-grid-1/
[CSS-GRID-2]
Tab Atkins Jr.; et al. CSS Grid Layout Module Level 2. 26 March 2025. CRD. URL: https://www.w3.org/TR/css-grid-2/
[CSS-IMAGES-3]
Tab Atkins Jr.; Elika Etemad; Lea Verou. CSS Images Module Level 3. 18 December 2023. CRD. URL: https://www.w3.org/TR/css-images-3/
[CSS-INLINE-3]
Elika Etemad. CSS Inline Layout Module Level 3. 18 December 2024. WD. URL: https://www.w3.org/TR/css-inline-3/
[CSS-OVERFLOW-3]
Elika Etemad; Florian Rivoal. CSS Overflow Module Level 3. 7 October 2025. WD. URL: https://www.w3.org/TR/css-overflow-3/
[CSS-PAGE-3]
Elika Etemad. CSS Paged Media Module Level 3. 14 September 2023. WD. URL: https://www.w3.org/TR/css-page-3/
[CSS-POSITION-3]
Elika Etemad; Tab Atkins Jr.. CSS Positioned Layout Module Level 3. 7 October 2025. WD. URL: https://www.w3.org/TR/css-position-3/
[CSS-PSEUDO-4]
Elika Etemad; Alan Stearns. CSS Pseudo-Elements Module Level 4. 27 June 2025. WD. URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-RUBY-1]
Elika Etemad; et al. CSS Ruby Annotation Layout Module Level 1. 31 December 2022. WD. URL: https://www.w3.org/TR/css-ruby-1/
[CSS-SPEECH-1]
Léonie Watson; Elika Etemad. CSS Speech Module Level 1. 14 February 2023. CRD. URL: https://www.w3.org/TR/css-speech-1/
[CSS-TABLES-3]
Keith Cirkel. CSS Table Module Level 3. 16 December 2025. WD. URL: https://www.w3.org/TR/css-tables-3/
[CSS-TEXT-4]
Elika Etemad; et al. CSS Text Module Level 4. 29 May 2024. WD. URL: https://www.w3.org/TR/css-text-4/
[CSS-UI-4]
Tab Atkins Jr.; Florian Rivoal. CSS Basic User Interface Module Level 4. 20 January 2026. WD. URL: https://www.w3.org/TR/css-ui-4/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 22 March 2024. 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. 12 March 2024. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 3. 10 December 2019. REC. URL: https://www.w3.org/TR/css-writing-modes-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 4. 30 July 2019. 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. 7 June 2011. REC. URL: https://www.w3.org/TR/CSS2/
[CSSOM]
Daniel Glazman; Emilio Cobos Álvarez. CSS Object Model (CSSOM). 26 August 2021. WD. URL: https://www.w3.org/TR/cssom-1/
[DOM]
Anne van Kesteren. DOM Standard. Living Standard. URL: https://dom.spec.whatwg.org/
[HTML]
Anne van Kesteren; et al. HTML Standard. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[MEDIAQUERIES-5]
Tab Atkins Jr.; et al. Media Queries Level 5. 19 February 2026. WD. URL: https://www.w3.org/TR/mediaqueries-5/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. Selectors Level 4. 22 January 2026. WD. URL: https://www.w3.org/TR/selectors-4/
[SVG2]
Amelia Bellamy-Royds; et al. Scalable Vector Graphics (SVG) 2. 4 October 2018. CR. URL: https://www.w3.org/TR/SVG2/

非規範的参考文献

[CSS3-EXCLUSIONS]
Rossen Atanassov; Vincent Hardy; Alan Stearns. CSS Exclusions Module Level 1. 15 January 2015. WD. URL: https://www.w3.org/TR/css3-exclusions/

プロパティ索引

名前 初期値 適用対象 継承 %値 アニメーション型 正準順序 算出値 媒体
display [ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy> inline すべての要素 しない 該当なし アニメーション不可 文法に従う 内側表示型および外側表示型を表すキーワードの組に、任意の list-item フラグを加えたもの、 または <display-internal> または <display-box> キーワード。算出規則については 各種仕様の本文を参照
order <integer> 0 フレックスアイテムおよびグリッドアイテム しない 該当なし 算出値の型による 文法に従う 指定された整数
visibility visible | hidden | collapse visible すべての要素 する 該当なし 離散 文法に従う 指定どおり 視覚