Standards-compliant mode

標準モードとは何か

現在もっともポピュラーなUAはMicrosoft® Internet Explorerでしょう。 しかし、その最新のバージョンであるバージョン6を除いては、 CSSの扱いに問題があります。

例えば、widthプロパティは本来内容の幅のみを指定しますが、 旧バージョンのMicrosoft® Internet Explorerでは、 その外側のpaddingとborderを含めた幅を指定しています。 その為、paddingとborder分幅が縮む事になります。

このようにMicrosoft® Internet Explorerのバージョン5までは、 CSSの扱いに多少なりとも問題があり、 Microsoft®社もそれを認識していました。 そこでバージョン6ではCSSの扱いを CSSの仕様書に合わた挙動に直しました。 しかし、既存のドキュメントの一部が、 この正しくない挙動に合わせて作られてしまっている為、 一様に挙動を変更すると、 それら古いドキュメントの一部が正しく表示されなくなってしまう事が問題となりました。

そこでMicrosoft®社は苦肉の策として、 HTMLCSSの仕様に忠実に動作する標準モードと 旧バージョンと同じ動作をする互換モードを作りました。

モードはどのように決定するか

そのドキュメントが標準モードで表示されるか、 互換モードで表示されるかは、 そのドキュメントの冒頭の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だけ抽出してみました。

Reference