現在もっともポピュラーなUAはMicrosoft® Internet Explorerでしょう。 しかし、その最新のバージョンであるバージョン6を除いては、 CSSの扱いに問題があります。
例えば、widthプロパティは本来内容の幅のみを指定しますが、 旧バージョンのMicrosoft® Internet Explorerでは、 その外側のpaddingとborderを含めた幅を指定しています。 その為、paddingとborder分幅が縮む事になります。
このようにMicrosoft® Internet Explorerのバージョン5までは、 CSSの扱いに多少なりとも問題があり、 Microsoft®社もそれを認識していました。 そこでバージョン6ではCSSの扱いを CSSの仕様書に合わた挙動に直しました。 しかし、既存のドキュメントの一部が、 この正しくない挙動に合わせて作られてしまっている為、 一様に挙動を変更すると、 それら古いドキュメントの一部が正しく表示されなくなってしまう事が問題となりました。
そこでMicrosoft®社は苦肉の策として、 HTMLやCSSの仕様に忠実に動作する標準モードと 旧バージョンと同じ動作をする互換モードを作りました。
そのドキュメントが標準モードで表示されるか、 互換モードで表示されるかは、 そのドキュメントの冒頭のDOCTYPE宣言によって決定されます。 次の表はMSDNの技術文書から引用したものです。 各!DOCTYPE宣言で標準モードで表示されるか、どうかを示しています。
Label | 定義 | URLが提供される | URLが提供されない |
---|---|---|---|
!DOCTYPEなし | Off | Off | |
HTML(バージョンなし) | Off | Off | |
HTML 2.0 | Off | Off | |
HTML 3.0 | Off | Off | |
HTML 3.2 | Off | Off | |
HTML 4.0 | 何も定義されません | On | On |
HTML 4.0 | Frameset | On | Off |
HTML 4.0 | Transitional | On | Off |
HTML 4.0 | Transitional | On | Off |
HTML 4.0 | Strict | On | On |
XHTML | On | On | |
XML | On | On | |
認識不能な!DOCTYPE | On | On |
この変な標準モード、互換モードは実は Mozilla、Netscape Navigatorにもあります。 どのUAでも標準モードになるDOCTYPEだけ抽出してみました。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">