この章は、CSS 2.2の描画順序について、仕様書の他の部分で説明されている以上に詳細に定義しています。
スタックの底はユーザーから最も遠く、スタックの上はユーザーに最も近い位置にあります:
| | | | | | | | ⇦ ☻ | | | ユーザー z-index: canvas -1 0 1 2
スタッキングコンテキストの背景と最も負の位置にあるスタッキングコンテキストはスタックの底にあり、最も正の位置にあるスタッキングコンテキストはスタックの上にあります。
キャンバスは、別のものに含まれている場合は透明で、含まれていない場合はUAによって定義された色を持ちます。それは無限の広がりを持ち、ルート要素を含みます。初期状態では、ビューポートはその左上隅がキャンバスの原点に固定されています。
スタッキングコンテキストを生成する要素の子孫の描画順序('z-index' プロパティを参照)は次の通りです:
要素がルート要素である場合:
要素がブロック、リストアイテム、またはその他のブロック等価物である場合:
それ以外の場合、要素がブロックレベルのテーブルである場合:
負のz-index(0を除く)を持つ位置指定された子孫によって形成されるスタッキングコンテキストを、z-indexの順(最も負のものから順番に)で、その後ツリー順で描画。
ツリー順における、すべてのインフローで位置指定されていないブロックレベルの子孫について: 要素がブロック、リストアイテム、またはその他のブロック等価物である場合:
それ以外の場合、要素がテーブルである場合:
すべての位置指定されていない浮遊子孫をツリー順で描画。それぞれについて、その要素が新たなスタッキングコンテキストを作成したかのように扱いますが、位置指定された子孫および実際に新しいスタッキングコンテキストを作成する子孫は、この新しいものではなく親スタッキングコンテキストの一部と見なされるべきです。
要素がスタッキングコンテキストを生成するインライン要素である場合:
要素が含まれる各ラインボックスについて:
それ以外の場合: 最初に要素について、その後ツリー順におけるすべてのインフローで位置指定されていないブロックレベルの子孫について:
要素がブロックレベルの置換要素である場合、置換コンテンツを一括して描画。
それ以外の場合、その要素の各ラインボックスについて:
そのラインボックス内で、その要素の子である各ボックスについてツリー順で描画:
要素の背景色。
要素の背景画像。
要素のボーダー。
インライン要素の場合:
その要素のすべてのインフローで位置指定されていないインラインレベルの子がこのラインボックス内にある場合、またその要素内のこのラインボックス上にあるすべてのテキストのランについてツリー順で描画:
これがテキストランである場合:
それ以外の場合、その要素について 7.2.1 にジャンプ。
インラインブロックおよびインラインテーブル要素について:
インラインレベルの置換要素について:
一部のボックスはライン分割やUnicodeの双方向アルゴリズムによって生成された可能性があります。
オプションで、その要素のアウトライン(10 以下を参照)を描画。
オプションで、要素がブロックレベルである場合、その要素のアウトライン(10 以下を参照)を描画。
すべての 'z-index: auto' または 'z-index: 0' を持つ位置指定された子孫をツリー順で描画。'z-index: auto' を持つものについては、その要素が新たなスタッキングコンテキストを作成したかのように扱いますが、位置指定された子孫および実際に新しいスタッキングコンテキストを作成する子孫は、この新しいものではなく親スタッキングコンテキストの一部と見なされるべきです。'z-index: 0' を持つものについては、生成されたスタッキングコンテキストを一括して処理。
z-indexが1以上の値を持つ位置指定された子孫によって形成されるスタッキングコンテキストを、z-indexの順(最小から順)で、その後ツリー順で描画。
最後に、上記の手順でアウトラインを描画しなかった実装は、この段階でこのスタッキングコンテキストからアウトラインを描画しなければならない。(このステップでアウトラインを描画し、上記の手順では描画しないことを推奨する。)
ルート要素の背景は、キャンバス全体にわたって一度だけ描画されます。
双方向インラインの背景はツリー順で描画されますが、それらはビジュアル順で配置されます。インライン背景の配置はCSS 2.2では指定されていないため、これらの2つの要件の正確な結果はUAによって定義されます。CSS3ではこれがさらに詳細に定義される可能性があります。