web-dev-qa-db-ja.com

DOCTYPEとは何ですか?

  • DOCTYPEとは何ですか、なぜ使用したいのですか?
  • 使用できるDOCTYPEは何ですか?
  • 標準モードと互換モードの違いは何ですか?また、異なるDOCTYPEを設定した場合に遭遇する可能性のあるいくつかの互換性は何ですか?

最後に、使用する適切なDOCTYPEは何ですか?

171
Bob

基本的に、DOCTYPEはページで使用されるHTMLを記述します。

ブラウザは、DOCTYPEを使用してページのレンダリング方法を決定します。 DOCTYPEを含めない、または誤ったDOCTYPEを含めると、奇抜なモードがトリガーされる可能性があります。ここでのキッカーは、Internet ExplorerのQuirksモードがFirefox(および他のブラウザー)のQuirksモードとはまったく異なることです。つまり、muchページが標準モードでレンダリングされる場合よりも、ページが奇抜モードでレンダリングされる場合、すべてのブラウザーでページが一貫して機能することを保証するのは困難です。

ウィキペディアには、 さまざまなDOCTYPEを使用した場合のレンダリングの違い のより詳細な要約があります。 XHTMLは特定のDoctypeによって有効にされており、XHTMLの使用については、 XHTML —神話と現実 で十分にカバーされているかなりの議論があります。

HTML5 doctype(<!DOCTYPE html>、「skinny doctype」としてのみ知られるHTML5より前の、古いブラウザで標準化されたレンダリングをトリガーしない)およびHTML 4.01移行用のこのような他のDOCTYPE:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
74
Walter Rumsby

DOCTYPEは、使用しているユーザーエージェント(Webブラウザー、Webクローラー、検証ツール)にファイルの種類を通知します。これを使用すると、コンシューマーが意図したとおりにHTMLを正しく解析することが保証されます。

HTML、XHTML、およびフレームセットにはいくつかの異なるDOCTYPEがあり、それぞれに2つのモードStrictおよびTransitionalがあります。 Strictは、マークアップが定義された標準を正確に使用していると言います。詳細については、 W3C DTD ページを参照してください。

基本的にQuirksmodeは、標準があまり尊重されておらず定義されていないブラウザ戦争時代のレイアウト方法です。一般に、有効な標準モードページは、さまざまなブラウザでより一貫してレイアウトされますが、必要な特定の機能が欠けている場合があります。そのような機能の1つは、アンカータグのターゲット属性です。 Quirksmode サイトは、これらの違いの優れたリソースです。

最後に、新しいHTML5標準では非常に単純なDOCTYPEの使用が提案されていると考えられます。

<!DOCTYPE html>

このDOCTYPEを使用することは、ページが標準モードであり、HTMLであることを指定するための上位互換性のある方法です。これはGoogleが使用する方法であり、覚えやすいものです。 XHTMLを使用する予定がない限り、このDOCTYPEを使用することをお勧めします。

26
Rob

Doctypeは、ドキュメントが使用するHTML/XHTMLのバージョンを定義します。バリデーターを通してコードを実行するときに、バリデーターがどのバージョンのHTML/XHTMLをチェックするかを知るために、Doctypeを使用したいでしょう。このページでは概要を説明しています。

Doctypeを追加することを忘れないでください

使用できる一般的なDoctypeは次のとおりです。

DTDの推奨リスト

どのdoctypeを使用すべきかは、使用しているコードによって異なりますが、アイデアを得るには、W3Cバリデーターを通してコードを実行し、Document Type[その他のオプション]メニューのドロップダウンメニューで、異なるdoctypeを試してください。

W3Cマークアップ検証サービス

6
GR1000

Webページで使用されるHTML(XHTMLを含む)では、DOCTYPEは、DOCTYPEの正確なスペルに応じて、いくつかのブラウザーモード(互換モード、標準モード、ほぼ標準モード)の1つをトリガーする文字列です。これを使用して、ページに最適なブラウザモードを選択します。

正式には、SGMLおよびXMLでは、DOCTYPE宣言は、マークアップ言語の正式な構文規則を指定するDocument Type Definition(DTD)への参照です。これまでにブラウザでDTDを使用したり、アクセスしたりしたことはありません。ただし、HTML5モードを除き、SGMLおよび W3C Markup Validator などのXMLマークアップ検証で使用されます。したがって、DOCTYPEの選択により、ドキュメントが送信された場合のバリデーターの動作が決まります。ただし、検証の動作モードはユーザーインターフェイスでも選択できます。 (SGMLプロセッサとXMLプロセッサは、他のさまざまな方法でDOCTYPEを使用することもありますが、質問は明らかにHTMLコンテキストとWebブラウザおよび密接に関連するソフトウェアに限定されることを意図しています。)

DOCTYPEの正式なリストはありません。各HTML仕様またはドラフトは、独自のDOCTYPEを定義します。モードの選択時にブラウザによって認識されるDOCTYPEのセットは、ブラウザによって異なります。実際には、<DOCTYPE html>HTML5で定義 以外のDOCTYPEを使用する理由はありませんが、HTML5にはいくつかの「レガシーDOCTYPE」もリストされています。標準モード(新しいページに推奨)が必要な場合はそのDOCTYPEを使用でき、互換モード(レガシーページに必要な場合があります)が必要な場合はDOCTYPEを使用できません。

「標準モード」とは、一般に、ブラウザがHTML、CSS、DOM、およびその他の仕様に可能な限り従う動作モードを意味します。通常、完全な適合を意味するものではありません。 「Quirksモード」はブラウザによって異なりますが、一般的にはIE 5.のような非常に古いブラウザの動作を模倣しようとすることを意味します。説明を参照してください Quirksモードで何が起こりますか? HTML5の「Quirksモード」にはかなり似た、より限定された概念があることに注意してください。 Quirks Mode Living Standard というドキュメント。

典型的な問題は、QuirksモードとStandardsモードでは要素の幅が異なる方法で計算されることです。これは、互換モードで動作するように設計されたページが標準モードで表示される場合(またはその逆)、ページのレイアウトが多少変更されたり、完全に台無しになったりすることを意味します。

そのため、新しいページには<!DOCTYPE html>を使用し、古いページに使用していたDOCTYPE(ある場合)を保持する必要があります。

ただし、一部のブラウザーでは、互換モードとは、CSSの多くの新機能がサポートされていないことを意味します。つまり、CSS3機能を使用して古いページを拡張する場合は、標準モードをトリガーするDOCTYPEに切り替える必要があります。そのような場合、ページを確認およびテストして、標準モードで実行されるかどうかを確認する必要があります。

3

Doctypeは、ページが記述されている言語(HTMLまたはXHTML)をブラウザに伝えます。例えば、

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

ブラウザにHTML4 strictとしてページをレンダリングするように指示します。古いブラウザはページの不正確なレンダリングに使用されていたため、新しいブラウザは古いDoctypeを見つけたときに古いブラウザのエラーをシミュレートします。

現在、少なくともHTML4以上のXHTMLを使用する必要があります。

Doctypesに関するブログエントリは正しいDOCTYPEでサイトを修正してください!(from A List Apart =)。

2
Georg Schölly

Webでは、Doctypeは、標準モード、ほぼ標準モード、または奇抜モードが必要かどうかをブラウザに通知するだけです。

Quirksモードでの変更はブラウザによって異なります。Firefox、Opera、Safari、およびChromeは、<table><tr><td><img></td></tr></table> (解決: td img { vertical-align:bottom; })。一方、IEはIE5.5のレンダリングエンジンに戻ります。つまり、2000年以降に実装された新機能のanyを使用することはできません。

標準モードをトリガーするには、HTML5 doctype <doctype html>、覚えやすいので。

1
Ms2ger

まず第一に、使用すべきDoctypeはありませんが、ほとんどのデザイナーはXHTML 1.0 Strict内でそれを動作させようとします。

Doctypeは、html内で使用できるタグの宣言にすぎません(ただし、ブラウザは定義されたものよりも多くまたは少ないものを使用できます)実際にdoctypeファイルを開いて読み取りを開始できます( XHTML 1.0 Strict

Doctypeを指定しない場合、ブラウザーは推測するために最善を尽くしますが、常に正しいタイプにヒットするとは限りません。

Quirksモードは、後方互換性を保つためにブラウザで使用される単なるテクニックです。Quirksモードの優れた例は、 IEがボックスをレンダリングする

1
Ólafur Waage

Doctypeは、xhtmlのようなドキュメントのコンテンツが(Webページのように)どのように見えるかを記述するドキュメントです。 注:これは上記ページの構文のみを定義し、ページのレンダリングはDTDによって定義されません!

たとえば、Doctypeは<table>- tagは次のようになります-受け入れる属性、および各属性で受け入れられる値/値タイプ。現在のWebページの辞書と考えてください。

Wikipedia には、一般的に使用されているさまざまなDoctypeに関する有益なページがあります。気をつけてください-あなた自身のDoctypeを作成することを妨げるものは何もありません。ただし、ドキュメントをレンダリングする方法をブラウザがおそらく知らない可能性があります。

使用するDTDは、作成する内容によって異なります。たとえば、XHTMLにはHTMLとはまったく異なるDTDがあります。

0
Henrik Paul