この章では、仕様の残りにおける説明よりも詳細にCSS 2.2描画順序を定義する。
スタックの最下部はユーザーから最も遠いが、スタックの最上位はユーザーに最も近い:
| | | | | | | | ⇦ ☻ | | | ユーザー z-index: canvas -1 0 1 2
スタックコンテキストの背景と最も負の位置のスタックコンテキストは、スタックの下部にあり、一方最も正の位置のスタックコンテキストはスタックの最上位にある。
別の内側に含まれる場合はキャンバスは透明であり、そうでない場合はユーザーエージェント定義の色が与えられる。範囲内で無限大であり、かつルート要素を含む。初めに、ビューポートは、キャンバスの原点で左上隅で固定される。
スタックコンテキスト( 'z-index'プロパティを参照)を生成する要素の子孫の塗装順序は次のとおり:
要素がルート要素である場合:
要素が、ブロック、リスト項目、または他のブロックと等価である場合:
そうでなければ、要素がブロックレベルのテーブルである場合:
z-index順(最も負のものが最初)でz-index(0を除く)とともに配置される子孫によって形成されるスタックコンテキスト、次にツリー順。
要素が、ブロック、リスト項目、または他のブロックと等価である場合、ツリーの順でほとんどすべてのフロー内、非配置、ブロックレベルの子孫:
そうでなければ、要素がテーブルである:
ツリー順で、すべての非配置浮動子孫。これらのいずれかそれぞれについて、あたかも新しいスタックコンテキストを作成したかのように要素を扱うが、任意の配置される子孫および実際に新しいスタックコンテキストを作成する子孫は、新しいスタックコンテキストではなく、親スタックコンテキストの一部と見なされるべきである。
要素がスタックコンテキストを生成するインライン要素である場合:
要素であるそれぞれの行ボックスの場合:
そうでなければ、最初に要素に対して、次にすべてのフロー、非配置、ブロックレベルの子孫のツリー順に:
要素がブロックレベル置換要素の場合、分割不能な置換コンテンツ。
そうでなければ、その要素の各行ボックスに対して:
その行ボックスで、ツリー順でその要素の子である各行ボックスに対して:
要素の背景色。
要素の背景画像。
要素のボーダー。
インライン要素に対して:
すべての要素のフロー内、非配置、この行のボックスにあるインラインレベルの子、この行のボックス上にある要素内のテキストのすべての実行、ツリーの順序で:
これがテキストの続きである場合:
そうでなければ、その要素に対して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つの要件の正確な結果は、ユーザーエージェント定義である。CSS3は、詳細にこれを定義するかもしれない。