Mozilla's getting a new look. What do you think? https://mzl.la/brandsurvey

後方互換モードと標準準拠モード

かつての Web では、たいてい 2 つのバージョンのページを作成していました。ひとつは Netscape Navigator 向け、もうひとつは Microsoft Internet Explorer 向けです。W3C が Web 標準を作成したとき、Web 上のほとんどの既存サイトの表示が壊れるため、ブラウザは Web 標準を採用し始めることができませんでした。そのためブラウザは、標準に準拠した新しいサイトと以前の古いサイトを区別して扱うために、2 つのモードを導入しました。

Web ブラウザのレイアウトエンジンが利用するモードは、後方互換 (Quirks) モード、ほぼ標準 (Almost Standards) モード、完全標準 (Full Standards) モードの 3 種類です。後方互換モードでは、レイアウトは Navigator 4 や Internet Explorer 5 のような非標準の動作をエミュレートします。これは、Web 標準が広く採用される前に作られた Web サイトをサポートするために必要です。完全標準モードでは、HTML や CSS の仕様書で書かれている通りに動作します (そのように期待されています)。ほぼ標準モードでは、ほぼ標準モードのトリガーとなる DOCTYPE を利用している実際のページについて表示を損なう可能性を考慮した、ごく少数の互換動作が実装されています。

ブラウザが利用するモードを決定する方法

HTML 文書については、ブラウザは文書の先頭にある DOCTYPE を使用して、後方互換モードで処理するか、標準準拠モードで処理するかを決定します。ページで完全標準モードが使用されることを確実にするには、以下のサンプルのような DOCTYPE を使用するようにしてください:

<!DOCTYPE html>
<html>
  <head>
    <meta charset=UTF-8>
    <title>Hello World!</title>
  </head>
  <body>
  </body>
</html>

このサンプルにある DOCTYPE の <!DOCTYPE html> はもっともシンプルな形式であり、HTML5 で推奨されているもののひとつです。以前のバージョンの HTML 標準では他の形式を推奨していましたが、現行のブラウザはすべて (旧式の Internet Explorer 6 でさえ)、この DOCTYPE に対して完全標準モードを使用します。より複雑な DOCTYPE を使用すべき理由はありません。他の DOCTYPE を使用する場合は、ほぼ互換モードや後方互換モードが適用される DOCTYPE を選択するおそれがあります。

DOCTYPE は HTML 文書の先頭に置くようにしてください。コメントや XML 宣言などが DOCTYPE の前に存在すると、Internet Explorer 9 以前で後方互換モードが適用されます。

HTML5 では、DOCTYPE の用途は完全標準モードを適用させることだけです。古いバージョンの HTML 標準では DOCTYPE に他の意味を与えていましたが、後方互換モードと標準準拠モードの切り替え以外の目的で DOCTYPE を使用するブラウザはありませんでした。

さまざまなブラウザのモード選択の詳細な説明もご覧ください。

XHTML

Content-Type HTTP ヘッダで application/xhtml+xml を使用して、ページを XHTML として提供する場合は、文書で常に完全標準モードを使用しますので、標準準拠モードを有効化するための DOCTYPE は不要です。ただし application/xhtml+xml でページを提供すると、Internet Explorer 8 はページを表示せずに未知の形式のファイルをダウンロードするダイアログボックスを表示します。これは、最初に XHTML をサポートした Internet Explorer がバージョン 9 であるためです。

text/html MIME タイプを使用して XHTML 形式のコンテンツを提供する場合は、ブラウザが HTML として読み込みますので、標準準拠モードを使用するために DOCTYPE が必要です。

どのモードを使用しているか?

Firefox ではコンテキストメニューで ページの情報を表示 を選択して、描画モード を確認してください。

Internet Explorer では F12 を押下して、ドキュメントモード を確認してください。

モードの違い

それぞれのモードの違いについては、互換モード一覧 および Almost Standards Mode をご覧ください。

ドキュメントのタグと貢献者

 このページの貢献者: yyss, ethertank, Jeremie, Marsf, Mgjbot, kohei.yoshino
 最終更新者: yyss,