Was ist DOCTYPE?

174
  • Was ist DOCTYPE und warum möchte ich es verwenden?
  • Welche verschiedenen DOCTYPEs kann ich verwenden?
  • Was ist der Unterschied zwischen Standards und dem Mackenmodus und auf welche Macken kann ich mit unterschiedlich eingestellten DOCTYPEs stoßen?

Was ist der richtige DOCTYPE, den ich verwenden sollte?

Bob
quelle
9
Sollte das nicht ein Wiki sein?
Alex

Antworten:

76

Grundsätzlich beschreibt der DOCTYPE den HTML-Code, der auf Ihrer Seite verwendet wird.

Browser verwenden auch den DOCTYPE, um zu bestimmen, wie eine Seite gerendert werden soll. Das Fehlen eines DOCTYPE oder eines falschen DOCTYPE kann den Mackenmodus auslösen.

Der Kicker hier ist, dass sich der Mackenmodus in Internet Explorer stark vom Mackenmodus in Firefox (und anderen Browsern) unterscheidet. Dies bedeutet, dass Sie eine viel schwierigere Aufgabe haben und versuchen müssen, sicherzustellen, dass Ihre Seite mit allen Browsern konsistent gerendert wird, wenn der Mackenmodus ausgelöst wird, als wenn Sie im Standardmodus gerendert werden.

Wikipedia bietet eine detailliertere Zusammenfassung der Unterschiede beim Rendern bei Verwendung verschiedener DOCTYPEs . XHTML wird von bestimmten DOCTYPEs aktiviert, und es gibt einige Debatten über die Verwendung von XHTML, die in XHTML - Mythen und Realität - gut behandelt werden .

Es gibt subtile Unterschiede zwischen verschiedenen "standardkonformen" Rendering-DOCTYPEs, wie z. B. dem HTML5-DOCTYPE (<!DOCTYPE html> vor HTML5 nur als "Skinny Doctype" bekannt, der in älteren Browsern kein standardisiertes Rendering auslöst) und anderen DOCTYPEs wie diesem HTML 4.01 Übergang:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Walter Rumsby
quelle
39
Heutzutage bevorzuge ich HTML5 DOCTYPE: <! DOCTYPE html> Es funktioniert in allen modernen Browsern, einschließlich IE6.
Walter Rumsby
53
IE6 ∉ moderne Browser
26

Der DOCTYPE teilt dem konsumierenden Benutzeragenten (Webbrowser, Webcrawler, Validierungstools) mit, um welche Art von Dokument es sich bei der Datei handelt. Durch die Verwendung wird sichergestellt, dass der Verbraucher den HTML-Code korrekt analysiert, wie Sie es beabsichtigt haben.

Es gibt verschiedene DOCTYPES für HTML, XHTML und Framesets, von denen jedes zwei Modi hat: Strict und Transitional. Streng sagt, dass Ihr Markup genau die definierten Standards verwendet. Siehe W3C-DTDs Seite für weitere Details.

Quirksmode ist im Grunde die Layoutmethode aus den Browserkriegstagen, als die Standards viel weniger respektiert und definiert wurden. Im Allgemeinen wird eine gültige Seite im Standardmodus in verschiedenen Browsern konsistenter gestaltet, es fehlen jedoch möglicherweise bestimmte Funktionen, die Sie benötigen. Eine solche Funktion ist das Zielattribut des Ankertags. Die Quirksmode- Site ist eine großartige Ressource für diese Unterschiede.

Ein letzter Gedanke ist, dass der neue HTML5-Standard die Verwendung eines sehr einfachen DOCTYPE vorschlägt:

<!DOCTYPE html>

Mit diesem DOCTYPE können Sie vorwärtskompatibel festlegen, dass sich Ihre Seiten im Standardmodus und in HTML befinden. Dies ist die Methode, die Google verwendet und die relativ leicht zu merken ist. Ich empfehle die Verwendung dieses DOCTYPE, es sei denn, Sie planen die Verwendung von XHTML.

rauben
quelle
2
Ist DOCTYPE HTML-Tag? Wenn ja, warum brauchen wir das dann zuerst?
CuriousMind
2
@vipinkoul Das DOCTYPE-Tag gibt an, welche Art von HTML-Dokument Sie an den User-Agent senden. Es kann HTML oder XHTML oder ein Frameset sein. Und es könnte Strict HTML / XHTML / Frameset oder Transitional HTML / XHTML / Frameset sein. Meistens wirkt sich dies darauf aus, wie der Parser reagiert, wenn er auf einen Fehler stößt.
Rob
6

Ein Doctype definiert, welche HTML / XHTML-Version Ihr Dokument verwendet. Sie möchten einen Doctype verwenden, damit die Validatoren wissen, mit welcher HTML / XHTML-Version sie prüfen müssen, wenn Sie Ihren Code über Validatoren ausführen. Diese Seite bietet einen guten Überblick:

Vergessen Sie nicht, einen Doctype hinzuzufügen

Gängige Doctypes, die Sie verwenden können, sind hier aufgelistet:

Empfohlene Liste der DTDs

Welcher Doctype Sie verwenden sollten, hängt vom verwendeten Code ab. Um sich ein Bild zu machen, versuchen Sie, Ihren Code über den W3C-Validator auszuführen, und verwenden Sie das Dropdown-Menü Dokumenttyp im Menü "Weitere Optionen", um verschiedene Doctypes auszuprobieren .

W3C Markup Validation Service


quelle
3

In HTML (einschließlich XHTML), wie es auf Webseiten verwendet wird, ist DOCTYPE eine Zeichenfolge, die abhängig von der genauen Schreibweise des DOCTYPE einen der wenigen Browsermodi (Mackenmodus, Standardmodus, fast Standardmodus) auslöst. Sie möchten damit einen Browsermodus auswählen, der am besten zu Ihrer Seite passt.

Formal ist eine DOCTYPE-Deklaration in SGML und XML ein Verweis auf eine Dokumenttypdefinition (DTD), die die formalen Syntaxregeln der Auszeichnungssprache angibt. Kein Browser hat jemals DTDs für irgendetwas verwendet oder sogar darauf zugegriffen. Sie werden jedoch von SGML- und XML-Markup-Validatoren wie dem W3C-Markup-Validator verwendet , außer im HTML5-Modus. Daher bestimmt die Auswahl von DOCTYPE, wie ein Validator funktioniert, wenn das Dokument an ihn gesendet wird. Der Validator-Betriebsmodus kann jedoch auch in seiner Benutzeroberfläche ausgewählt werden. (SGML- und XML-Prozessoren verwenden DOCTYPEs möglicherweise auch auf andere Weise, aber die Frage soll sich anscheinend auf den HTML-Kontext sowie auf Webbrowser und eng verwandte Software beschränken.)

Es gibt keine maßgebliche Liste von DOCTYPEs. Jede HTML-Spezifikation oder jeder HTML-Entwurf definiert ihre eigenen DOCTYPE oder DOCTYPEs. Die Anzahl der DOCTYPEs, die von Browsern bei der Auswahl des Modus erkannt werden, variiert je nach Browser. In der Praxis gibt es keinen Grund, einen anderen als <DOCTYPE html> den in HTML5 definierten DOCTYPE zu verwenden , obwohl HTML5 auch einige „ältere DOCTYPEs“ auflistet. Sie können diesen DOCTYPE verwenden, wenn Sie den Standardmodus möchten (empfohlen für neue Seiten), und keinen DOCTYPE verwenden, wenn Sie den Mackenmodus möchten (den Sie möglicherweise für ältere Seiten benötigen).

„Standardmodus“ bezeichnet im Allgemeinen den Betriebsmodus, in dem ein Browser HTML, CSS, DOM und anderen Spezifikationen so gut wie möglich folgt. Dies bedeutet normalerweise nicht die vollständige Konformität. Der „Quirks-Modus“ ist in verschiedenen Browsern unterschiedlich, bedeutet jedoch im Allgemeinen, dass versucht wird, das Verhalten sehr alter Browser wie IE 5 nachzuahmen. Der Zweck besteht darin, alte Seiten funktionsfähig zu halten, unter der Annahme, dass sie möglicherweise auf Funktionen und Fehlern in den Browsern beruhen alte Browser. Siehe Beschreibung Was passiert im Quirks-Modus? Beachten Sie, dass es in HTML5 ein etwas anderes, eingeschränkteres Konzept des „Quirks-Modus“ gibt, das dem Dokument mit dem Namen Quirks Mode Living Standard sehr ähnlich ist .

Ein typisches Problem ist, dass Elementbreiten im Mackenmodus und im Standardmodus unterschiedlich berechnet werden. Dies bedeutet, dass das Layout einer Seite mehr oder weniger geändert oder sogar völlig durcheinander gebracht werden kann, wenn eine Seite, die für den Mackenmodus ausgelegt ist, im Standardmodus angezeigt wird (oder umgekehrt).

Sie sollten es also <!DOCTYPE html>für neue Seiten verwenden und den DOCTYPE (falls vorhanden) behalten, den Sie für alte Seiten verwendet haben.

Der Mackenmodus bedeutet jedoch in einigen Browsern, dass viele neue Funktionen von CSS nicht unterstützt werden. Wenn Sie also eine alte Seite mit einer CSS3-Funktion erweitern möchten, müssen Sie möglicherweise zu einem DOCTYPE wechseln, der den Standardmodus auslöst. In diesem Fall müssen Sie die Seite überprüfen und testen, um festzustellen, ob sie im Standardmodus ausgeführt wird.

Jukka K. Korpela
quelle
Vielen Dank für die zusätzlichen Details, insbesondere für diese: «Kein Browser hat jemals DTDs für irgendetwas verwendet oder sogar darauf zugegriffen» und «Es gibt keinen Grund, einen anderen DOCTYPE <DOCTYPE html>als den in HTML5 definierten zu verwenden ».
Armfoot
2

Doctypes teilen dem Browser mit, in welcher Sprache die Seite geschrieben ist, sei es HTML oder XHTML. Beispielsweise,

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

Weisen Sie den Browser an, die Seite als zu rendern HTML4 strict. Ältere Browser werden verwendet, um Seiten falsch zu rendern, und daher simulieren neuere Browser Fehler der älteren Browser, wenn sie einen alten Doctype finden.

Heute sollten Sie mindestens HTML4 oder besser XHTML verwenden.

Ein Blogeintrag über Doctypes lautet Fix Your Site With the Right DOCTYPE! (aus einer Liste auseinander ).

Georg Schölly
quelle
1

Zunächst gibt es keinen Doctype, den Sie verwenden sollten, aber die meisten Designer versuchen, ihn in XHTML 1.0 Strict zum Laufen zu bringen.

Ein Doctype ist nichts anderes als eine Erklärung, welche Tags Sie in Ihrem HTML verwenden können (obwohl die Browser mehr oder weniger als definiert verwenden können). Sie können die Doctype-Datei tatsächlich öffnen und mit dem Lesen beginnen ( XHTML 1.0 Strict ).

Wenn Sie keinen Doctype angeben, versucht der Browser nach besten Kräften zu raten, trifft jedoch nicht immer den richtigen Typ.

Der Quirks-Modus ist nur eine Technik, die von Browsern verwendet wird, um abwärtskompatibel zu sein. Ein gutes Beispiel für den Quirks-Modus ist das Rendern von Boxen durch den IE

Ólafur Waage
quelle
1

Ein Doctype ist ein Dokument, das beschreibt, wie der Inhalt eines xhtml-ähnlichen Dokuments aussehen kann (wie eine Webseite). Hinweis: Dies definiert nur die Syntax dieser Seite, das Rendern der Seite wird NICHT von der DTD definiert!

Ein Doctype könnte beispielsweise definieren, wie der <table>-tag aussehen kann - welche Attribute er akzeptiert und welche Werte / Werttypen für jedes Attribut akzeptiert werden. Stellen Sie sich das als Lexikon für Ihre aktuelle Webseite vor.

Wikipedia hat eine informative Seite über die verschiedenen Doctypes, die allgemein verwendet werden. Wohlgemerkt - nichts hindert Sie daran, Ihren eigenen Doctype zu erstellen. Es besteht jedoch die Möglichkeit, dass der Browser wahrscheinlich nicht weiß, wie Ihr Dokument gerendert werden soll.

Welche DTD verwendet werden soll, hängt davon ab, was Sie schreiben werden. XHTML hat beispielsweise eine ganz andere DTD als HTML.

Henrik Paul
quelle
1

Im Web sagt ein Doctype dem Browser lediglich, ob Sie Standards, fast Standards oder den Mackenmodus wünschen.

Welche Änderungen im Mackenmodus vorgenommen werden, hängt vom Browser ab: Firefox, Opera, Safari und Chrome implementieren eine begrenzte Anzahl von Macken, z. B. das Entfernen des Platzes für Textnachkommen in Code wie <table><tr><td><img></td></tr></table>(Lösung :) td img { vertical-align:bottom; }. IE hingegen kehrt zur Rendering-Engine in IE5.5 zurück. Das bedeutet, dass Sie keine der neuen Funktionen verwenden können, die seit 2000 implementiert wurden.

Um den Standardmodus auszulösen, empfehle ich die Verwendung des HTML5-Doctype <doctype html>, da dieser am einfachsten zu merken ist.

Ms2ger
quelle