ボックス・ツリー
CSSで文書が整形される時、CSSは文書を要素とテキスト・ノードをDOMなどのツリー構造状に整理した文書ツリーとして読み取り、これをもとに“ボックス・ツリー(Box Tree)”を構築します。
ボックス・ツリーが構築される時、最初にカスケードと継承によってそれぞれの要素とテキスト・ノードに割り当てられるCSSのプロパティの計算値を決定します。
次に、それぞれの要素は“display”プロパティの値に従い、その要素を表し、コンテンツをボックス・ツリー内で内包するためのボックスを生成します。要素はボックス・ツリー内に複数のボックスを作り出すこともありますが、ボックスを作らないこともあります。通常ボックスはそのボックスを生成した要素に指定されたのと同じスタイルが適用されます。要素に継承されたスタイルはプリンシパル・ボックスに適用され、ボックス・ツリーを介して同じ要素によって生成された他のボックスにも適用されます。
ボックス・ツリー内で要素が生成したプリンシパル・ボックスはその要素の祖先要素のプリンシパル・ボックスの子孫ボックスとなります。多くの場合、要素のプリンシパル・ボックスの親ボックスはその要素の親要素のプリンシパル・ボックスです。しかし、ラン・イン・ボックス(“display:run-in;”)やテーブル・レイアウト(“display:table;”)の場合、アノニマス・ボックスが間に入る場合などはプリンシパル・ボックスの直接の親要素は要素の親要素のプリンシパル・ボックスではありません。
テキスト・ノードはそのコンテンツであるテキストを内包するためのテキスト・ランを生成します。連続する兄弟関係にあるテキスト・ノードは一つのテキスト・ランを形成しますが、複数の行にまたがる場合やページの区切りがある場合などにはテキスト・ランは複数の断片に分割されることがあります。