CSSの実験

昨日書いたとおり、thead,tfootに関するちょっとした実験をしてみた。
CALSテーブルのthead,tfoot,tbodyはtable要素内でこの順番に配置できるが、表示は順番が異なる。で、CSSは一体どの時点の順番で「隣接」とか「子孫」「子」という構造を判定しているのかがちょっと分からなくなった。
前回、「tr要素は省略していたtbody要素の子である」ことが分かったので、少なくともパース後の構造なのだろうということは分かったが、tfootはパースした後表示する時点で順番が変わってしまう。ということはthead + tfootに反応すればパース直後、tbody + tfootに反応すれば表示前の構造なのだろうと思って試してみた。
すると、thead + tfootの方が有効だということが分かった。
まぁよく考えると、パース直後よりも踏み込んだタイミングで適用すると無茶苦茶理解不能な仕様になるよなぁ。とりあえず複雑なCSSを考えるときには対象のHTMLをあらかじめパースしておいた方が良いのかもしれない。
XML(と、その派生のXHTML)は一切の省略を許さない「機械に優しい」仕様なのであんまりこういうこと関係ないのだろうが。