Einige HTML-Elemente sind „optional“

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Es gibt eine Vielzahl von HTML, die man einfach aus dem Quell-HTML *weglassen* kann und es ist immer noch gültiger Markup.

Sieht das nicht seltsam aus?

<p>Paragraph one.
<p>Paragraph two.
<p>Paragraph three.

Das tut es bei mir, aber die schließenden </p>-Tags sind optional. Der Browser erkennt, dass er sie benötigt, und stellt sie trotzdem korrekt im DOM dar.

Das passiert wahrscheinlich auch mit HTML, das Sie schreiben, und Sie wissen es gar nicht. Zum Beispiel...

<table>
  <tr>
    <td></td>
  </tr>
</table>

Das sieht für mich perfekt aus, aber der Browser fügt ein <tbody> drumherum um dieses <tr> ein. Optional in HTML, aber das DOM fügt es trotzdem ein.

Sogar ein <body> ist in gleicher Weise nicht wirklich nötig! Jens Oliver Meiert teilt mehr mit

<link rel=stylesheet href=default.css>

Einige Attribute sind ebenfalls „optional“ in dem Sinne, dass sie Standardwerte haben, die man weglassen kann. Zum Beispiel ist ein <button> automatisch ein <button type="submit">.

Jens argumentiert weiter, dass dies fast als Optimierungen betrachtet wird, da es die Dateigröße und somit die Netzwerkgeschwindigkeit reduziert.

Ich persönlich mag HTML, das so aussieht, nicht. Das macht mir Sorgen, da es tatsächliche Situationen gibt, die schiefgehen, wenn man es nicht richtig macht. Nicht alle Dateinamen können ohne Anführungszeichen bleiben. Manchmal bedeutet das Weglassen von schließenden Tags, dass ein Geschwisterelement auf eine Weise umschlossen wird, die man nicht erwartet hat. Ich würde sogar einen winzigen Hauch von Leistung für eine widerstandsfähigere Website opfern. Ähnlich wie ich weiß, dass * {} kein besonders effizienter Selektor ist, aber sich Sorgen um die Leistung von CSS-Selektoren zu machen, ist in den meisten Fällen eine fehlgeleitete Sorge (der Geschwindigkeitsunterschied ist vernachlässigbar).

Ich mag JSX eigentlich sehr, da es Sie zwingt, „HTML“ streng zu schreiben. Diese Strenge hilft auch bei der Codeformatierung (z. B. Prettier) als Bonus.

Aber hey, ein Performance-Gewinn ist ein Performance-Gewinn, daher würde ich nichts dagegen sagen, wenn Tooling diese Dinge automatisch in kompilierte Ausgaben einfügt. Das kann anscheinend HTMLminifier.