Optionale Tags in HTML5

Start- und End-Tags mancher HTML5-Elemente kann man weglassen. Das ist schon seit HTML 2 so. Die Spezifikation lässt dies zu, das damit produzierte HTML bleibt also valide. Was das bringt? Google hat z.B. herausgefunden, dass man damit die Größe einer Webseite um bis zu 20 % verringern kann. Für Leute, die in HTML-Syntax schreiben und die eigene Webseite ein klein wenig schneller machen möchten, kann diese Vorgehensweise also durchaus sinnvoll sein und in Erwägung gezogen werden.

Allerdings sollte man sich auch eines Nachteils bewusst sein: Der Internet Explorer verkorkst die HTML-Verarbeitung bei nicht vorhandenem body-Start-Tag. Wer auf Nummer sicher gehen möchte, sollte also zumindest den body-Start-Tag immer deklarieren. Außerdem ist das Weglassen eines Tags an einige spezielle Bedingungen geknüpft. Genug der vielen Worte, hier die Übersicht:

Element Start-Tag End-Tag
Element Start-Tag End-Tag
body optional (wenn Element leer ist oder unmittelbar danach kein Leerzeichen oder Kommentar folgt – außer wenn unmittelbar danach ein script- oder style-Element folgt) optional (wenn unmittelbar danach kein Kommentar folgt)
colgroup optional (wenn Element nicht leer ist, unmittelbar danach ein col-Element folgt oder vor dem Element nicht ein colgroup-Element steht, dessen End-Tag weggelassen wurde) optional (wenn unmittelbar danach kein Leerzeichen oder Kommentar folgt)
dd benötigt optional (wenn unmittelbar danach ein dd- oder dt-Element folgt oder im Elternelement kein Inhalt mehr folgt)
dt benötigt optional (wenn unmittelbar danach ein dd- oder dt-Element folgt)
head optional (wenn Element leer ist oder unmittelbar danach ein Element folgt) optional (wenn unmittelbar danach kein Leerzeichen oder Kommentar folgt)
html optional (wenn unmittelbar danach kein Kommentar folgt) optional (wenn unmittelbar danach kein Kommentar folgt)
li benötigt optional (wenn unmittelbar danach ein li-Element folgt oder im Elternelement kein Inhalt mehr folgt)
optgroup benötigt optional (wenn unmittelbar danach ein optgroup-Element folgt oder im Elternelement kein Inhalt mehr folgt)
option benötigt optional (wenn unmittelbar danach ein optgroup- oder option-Element folgt oder im Elternelement kein Inhalt mehr folgt)
p benötigt optional (wenn unmittelbar danach ein address-, article-, aside-, blockquote-, dir-, div-, dl-, fieldset-, footer-, form-, h1-, h2-, h3-, h4-, h5-, h6-, header-, hgroup-, hr-, menu-, nav-, ol-, p-, pre-, section-, table- oder ul-Element folgt oder im Elternelement kein Inhalt mehr folgt und Elternelement kein a-Element ist)
rp benötigt optional (wenn unmittelbar danach ein rp- oder rt-Element folgt oder im Elternelement kein Inhalt mehr folgt)
rt benötigt optional (wenn unmittelbar danach ein rp- oder rt-Element folgt oder im Elternelement kein Inhalt mehr folgt)
tbody optional (wenn Element nicht leer ist, unmittelbar danach ein tr-Element folgt oder vor dem Element nicht ein tbody-, tfoot- oder thead-Element steht, dessen End-Tag weggelassen wurde) optional (wenn unmittelbar danach ein tbody- oder tfoot-Element folgt oder im Elternelement kein Inhalt mehr folgt)
td benötigt optional (wenn unmittelbar danach ein td- oder th-Element folgt oder im Elternelement kein Inhalt mehr folgt)
tfoot benötigt optional (wenn unmittelbar danach ein tbody-Element folgt oder im Elternelement kein Inhalt mehr folgt)
th benötigt optional (wenn unmittelbar danach ein td- oder th-Element folgt oder im Elternelement kein Inhalt mehr folgt)
thead benötigt optional (wenn unmittelbar danach ein tbody- oder tfoot-Element folgt)
tr benötigt optional (wenn unmittelbar danach ein tr-Element folgt oder im Elternelement kein Inhalt mehr folgt)

Quellen und weiterführende Links zum Thema