ちょっとしたメモ

CSS 2.1の最終草案再び

CSS 2.1仕様のラストコールが11月6日付でまたまた(何回目?)登場。本質的なところでは変化はないものの、4月の草案と比べると多少の手直しが見られる。いい加減に勧告候補に進んで欲しいものだ。

大きな見直しの一つは、min/max-width/heightと画像のような内在アスペクト比を持つ置換要素との関係(セクション10.4)。こうした要素のwidthもしくはheightだけを明示的に指定して、もう一方をmin/max指定したとき、内在比と矛盾が出たらどうしよういう部分だ。たとえば縦横比1:1である画像に対して、

{width:200px; min-height:300px}

というスタイルを宣言すると、画像は正方形ではなく縦長になってしまう(というのが従来の仕様)。これに対して、min/maxの場合は内在比を尊重すべきではないかという意見が出て、WGでまとまらないのでコメントを求むという扱いになっている。

他に目立ったところでは、font-familyの一般フォントファミリー(serifsans-serifなど)に関する詳しい説明がセクション15.3.1として追加された、Appendix Eの重ね合わせ順序のアルゴリズムで、通常フロー要素の部分がより細かく書き直された、といったところか。そのほか用語の明確化など細かい修正はたくさんあるが、本質的な違いはない。

CSS2.1本との関係でいえば、ボックスの高さ、幅の計算式にスクロールバーの幅が追加されたことが少し影響あるかな。例えば通常フローのボックス幅を計算するための等式は、次のようになった。

'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' + scrollbar width (if any) = width of containing block

通常はスクロールバー幅は関係ないが、overflowがからんでくるときにはこれが関与するので、一般式にも取り入れられたというわけだ。で、overflow:scollなどでスクロールバーが描かれるとき、以前はこの幅はwidthheightを減らす(Any space taken up by the scrollbars should be subtracted from the computed width/height)となっていたのが、今回は次のように変更された。

The space taken up by the scrollbars affects the computation of the dimensions in the rendering model.

スクロールバーによって枠が変化するのはまずいけれども、その分をコンテント幅(高)で調整するか、パディングで調整するかは大きな問題ではないので、実装もにらんであえて曖昧にしたのかな。書籍のpp.124-125ではwidthheightを減じると断言しているけれど、このまま進めばちょっと書き直しが必要だ。

もうひとつ細かいところで、セクション15.7においてfont-sizeの絶対サイズ(xx-largeなど)を見出しレベルに対応づけていた馬鹿げた例は削除された。h6xx-small相当などというのはナンセンスの極みだから、当然の処置だが、書籍p.260の注で揶揄しているのも削除する必要あり;-)

関連メモ:
map - at