ちょっとしたメモ

CSS 2.1「内容高算出」の補遺

『セオリー・オブ・スタイルシート』のPart.1として出版されたCSS 2.1の解説において、ボックス高の「内容高算出」と呼んでいる規則について、説明に少し不備が見られるので若干の補足を。対象箇所は「3.4.1.4 絶対位置決めボックスの高さの計算」で、記述をシンプルにしようと説明を端折ったために、正確さを欠く結果になっている。

ここで「内容高算出」とは、通常のボックスの高さを算出する際に、ボックス内容がインラインかブロックか、枠やパディングを持つかどうかで少々違いが出る算出規則を、後で参照して簡潔に記述するために仮につけた呼称。この同じ名前を、絶対位置決めボックスの高さ計算の説明でもそのまま使ったのだが、絶対位置決めの場合はマージンの折り畳みが生じないので、枠やパディングの有無に関係なく子ボックスの外辺によって高さを計算する。したがって、これでは不正確な説明になってしまうという次第。

とりあえずの補遺として、3.4.1.4の第3段落、「Tを通常配置計算する」と呼ぶことにします の後に、次の一文を加えておきます。

また、ここでも前項と同じく子ボックスの高さの累計計算を「内容高算出」と呼びますが、絶対位置決めボックスの場合はマージンの折り畳みが行われないので、内容がブロックレベルであるときは、枠やパディングに関係なく(b)の“最初の子ボックスの上外辺から最後の子ボックスの下外辺までの長さ”を用います。

CSS2.1仕様のボックス高計算は、場合分けが多く説明も煩雑で読みにくいので、何とか話をすっきりさせようといろいろ策を弄したのだが、結果として不備な記述になってしまっていた。調べ物をしていて、指摘をしてくださっているウェブページ『セオリー・オブ・スタイルシート』の「内容高算出」:メモランダムを偶然見かけて気づいた。著者、石川さんに感謝します。

at