XHTMLはXMLに準拠させたHTMLであるので、記述の際にはXML宣言を記述することがW3Cによって強く奨励されています。
XML宣言は、すべてのXML文書に必須というわけではない。XHTML文書の制作者は、すべての文書でXML宣言を使うよう強く奨励される。文書のキャラクタエンコーディングがデフォルトの UTF-8 か UTF-16 以外のものであるときは、そうした宣言は必須である。
あくまで奨励であるので必須ではないですが、問題となるのはXML宣言の有無によってDOCTYPEスイッチが切り替わるブラウザがあることです。
大抵のブラウザは、XML宣言の有無に関わらず標準準拠モードで解釈されるのに対し、IE6.0では後方互換モードで解釈します。
これはIE6.0の持つ固有のバグのせいでそうなってしまいます。
両モードでの大きな違いとして、後方互換モードではボックスサイズに関してwidthとheightにpaddingやborderの値も含めてしまいます。
以下、例の為のサンプルスタイルです。
div#sample { padding:5px; border:1px solid #ccc; width:200px; height:100px;}上記のようなスタイルを指定した場合、標準準拠モードでのボックス全体の横幅(高さも同様)は、width、左右padding、左右borderの値を合計した212pxとなりますが、後方互換モードではwidhの値がそのままボックスサイズとなり、200pxの横幅で表示されます。
このため、コンテンツ表示領域が左右padding、左右borderの値だけ狭められることになり、コンテンツ領域は188pxとなってしまいます。
また、IE6.0ではXML宣言有りの場合文字サイズにsmallなどの定義語を指定すると、一段階大きく表示されます。(small指定で本来のmediumの大きさを表示してしまう)
なのでサイズ固定にしたくない場合はパーセント指定が望ましいようです。
他にも以下のようなバグがあるようです。
あと、XML宣言入りの文書だとIE6の場合テーブル要素に文字サイズのパーセント指定が効かないので、表の中だけは固定サイズにしています。
実際、バグの多いブラウザのようですが、IE6.0は現時点でトップのシェアを誇るブラウザなので、制作者側はこれを無視することはできないと思います。
IE6.0とうまく付き合っていくにはCSSの記述を工夫する必要があり、今後当ブログでもこれをテーマのひとつに盛り込もうと考えています。
※当ブログはXML宣言有りのXHTML-1.0-Transitionalで記述しています。
Copyright © 2006 よしゆき All Rights Reserved. Template designed by よしゆき Photo by 写真素材 [フォトライブラリー]