インターネットエクスプローラの表示モード。
インターネットエクスプローラの表示モードに関して解説します。
インターネットエクスプローラの実装の問題。
インターネットエクスプローラでは、4.0の頃からCSSの実装に間違いがありました。
多数あるのですが、その中でも代表的なものをあげると以下の二つがあります。
- 幅や高さの扱い
- widthプロパティ及びheightプロパティにおいて、その値にパディングやボーダの幅も含んでしまうのです。
- 仕様では、これらの値は含まれず、要素そのものの大きさを値とします。
- <html>要素へのスタイル指定が無効になる
- CSSはどんな要素に対してもスタイル指定が有効になります。
ですが、インターネットエクスプローラでは、<body>要素より上位の<html>要素へのスタイルが効きません。
この結果、当然標準に準拠している他のユーザエージェントとでは表示結果が大きく異なってしまいます。
このため、
- ウィンドウズ版では6.0から
- マッキントッシュ版では5.xに於いて
標準準拠モードが実装される事となりました。
標準準拠モードは、上記の誤った処理を正すだけでなく、標準で認められていない値を弾くなど、他にもいくつか異なる点があります。
- しかしながら、実際にはそれ以前の実装の問題があって、標準準拠とはどうしても言い難いのですが…。
一方、従来との互換性を維持するため、従来の表示方式は後方互換モードとして存続しております。
- 実は、他のユーザエージェントにも同様のモードがありますが、ここまで大きく挙動を変えたりはしないようです。
標準準拠モードにするには。
標準準拠モードにするには、以下のようにします。
これは、標準に対応している制作者なら、ストリクトな文書型を撰ぶか、そうでなくても文書型宣言も正しく書くだろうと言う発想に基づくものと思われます。
しかしながら、その判定方法が余りにもいい加減なため、以下の場合に後方互換モードと誤認される事があります。
- ウィンドウズ版の6.xでは、XHTML文書の冒頭のxml宣言が入ると文書型宣言が無いものと誤認し、後方互換モードを採ってしまいます。
- ISO-HTMLでは、文書型宣言では
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HyperText Markup Language//EN">と書かず、
<!DOCTYPE HTML PUBLIC "ISO/IEC 15445:2000//DTD HTML//EN">と書くと、後方互換モードと誤認されます。
- これらの問題は、ウィンドウズ・インターネットエクスプローラ 7.0で解決するようです。