今日も適当ダイアリー

PHP や Javascript や Symfony、BEAR.Sunday などのWeb周りのことを中心に。それ以外のことも気まぐれに投稿します。

一般的なブラウザで標準準拠モードにしたい場合のDOCTYPE

一般的なPC用のブラウザでは、大きく分けて標準準拠モードと後方互換モードといった2つの描画モードがある事が多い。
標準準拠モードは、(X)HTMLの根本に立ち返った文法重視の解釈を行うモードで、それに対して後方互換モードでは、文法を緩く解釈をして表示してくれるモードになっています。

近頃では少しずつ、(X)HTML+CSSという考え方が浸透してきているため、文法に忠実にコーディングされたページも多いのですが、そういうページが後方互換モードで表示されてしまうとサイトのレイアウトが崩れたり不具合が発生する場合もあります。

ブラウザがこのモードを判断するために利用しているのが、DOCTYPEなどの、HTMLの一番上にされる宣言なのですが、ブラウザによって実装状況が違うため紛らわしいのです。

標準準拠モードにしたい場合は、下記DOCTYPEのいずれかを宣言すれば多くのブラウザで標準準拠モードになります。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

なお、xhtmlでの記述の場合でも

<?xml 〜〜 ?>

XML宣言を入れてしまうと、IE6で後方互換モードになってしまいますので、ご注意下さい。

より、詳細に知りたい方は、2xup.orgさんが公開されているGoogle ドキュメントにて各ブラウザの挙動が紹介されているようです。

参考URL:http://2xup.org/log/2007/07/27-2111