Benötigen wir noch Schrägstriche in HTML5?


121

Benötigen wir in HTML5 immer noch den Schrägstrich wie in XHTML?

<img src="some_image.png" />

validator.w3.org hat sich nicht beschwert, wenn ich es fallen ließ, nicht einmal eine Warnung. Einige Online-Dokumente scheinen jedoch darauf hinzuweisen, dass für Tags wie img, link, meta, br usw. immer noch ein Schrägstrich erforderlich ist.


6
Immer noch ? Erforderte eine HTML-Version das Schließen aller Tags?
Gabe

9
@Gabe XHTML 1.0 Strict braucht es. Ich meine, Webseiten werden normalerweise gut geladen, aber es wird als ungültig angesehen.
CaptSaltyJack

3
Ja, aber dieses X ist nicht nur da, weil X cool ist, es gibt eine ziemliche Lücke zwischen HTML und XHTML.

1
@Capt: Sie sind korrekt, aber das sollte nur dann ein Problem sein, wenn Ihr Doctype XHTML anzeigt.
Gabe

Antworten:


81

img Tags sind leere Elemente, daher benötigen sie kein End-Tag.

Leere Elemente Bereich, Basis, br, col, Befehl, Einbetten, hr, img, Eingabe, keygen, Link, Meta, Parameter, Quelle, Spur, wbr

...

Leere Elemente haben nur ein Start-Tag. End-Tags dürfen nicht für leere Elemente angegeben werden.

W3C | WAS

Davon abgesehen ist es kein striktes Parsen in HTML5, so dass es keinen größeren Schaden anrichtet.


Nur neugierig, weil mein Editor (Komodo) einrückt, wenn ich '<img src = "x">' eingebe und die Eingabetaste drücke. Es erwartet den abschließenden Schrägstrich im HTML5-Modus und ich wollte sicherstellen, dass dies das richtige Verhalten ist.
CaptSaltyJack

5
Dies ist HTML, nicht XHTML, daher ist es nicht erforderlich. Glücklicherweise verstehen Parser die Schrägstriche im XHTML-Stil immer noch einwandfrei, sodass es nicht schadet, sie dort zu belassen. Dies erleichtert die Rückwärtskonvertierung in XHTML, falls dies aus irgendeinem Grund erforderlich ist.
Nightfirecat

4
@FreeRadical: Ein abschließender Schrägstrich ist für ein void-Element optional, ein End- Tag wäre jedoch ungültig.
Ry-

25
Während es sich bei der Frage um Schrägstriche handelt (z. B. <br/), bezieht sich diese Antwort nur auf End-Tags (z <br></br>. B. ).
Free Radical

12
@FreeRadical ist korrekt. Diese Antwort ist technisch falsch, weil sie an ending slashmit an end tagden von ihr zitierten Absätzen verwechselt wird und sie daher falsch versteht. Dies führt zu @ YannisDrans Verwirrung. @minitech gibt korrekt an, was wahr ist.
ToolmakerSteve

94

In HTML 5 ist der Schrägstrich für leere Elemente optionalimg (ich füge dies hinzu, da die derzeit akzeptierte Antwort nur lautet: "End-Tags dürfen nicht für leere Elemente angegeben werden" und sich nicht mit schließenden Schrägstrichen in leeren Elementen befasst).

Zitiert von http://www.w3.org/TR/html5/syntax.html#start-tags (Nummer 6):

Wenn das Element eines der leeren Elemente ist oder wenn das Element ein Fremdelement ist, kann es ein einzelnes "/" (U + 002F) Zeichen geben. Dieses Zeichen hat keine Auswirkung auf leere Elemente, aber auf fremde Elemente markiert es das Start-Tag als selbstschließend.


Dies ist keine HTML5-Sache. Eigentlich in früheren Versionen von HTML <br/>oder <img ... />waren Fehler.
JJ

@jj Ich zitiere die HTML5-Dokumente, daher verstehe ich nicht, warum ich nicht denke, dass es nicht HTML5 ist. In der Tat waren solche Schrägstriche in anderen Versionen Fehler.
Free Radical

Klar, ich wollte sagen "brauchen wir noch Schrägstriche in HTML5" ist die falsche Frage. Vielleicht schreibe ich eines Tages eine vollständige Antwort mit einigen historischen Links. IIRC Es war eine schwere Entscheidung für Ian Hickson (den HTML-Editor), nachgestellte Schrägstriche in HTML5 zuzulassen .
jj

2

Nee. HTML hat es noch nie benötigt, auch nicht vor HTML5. Wenn Sie XHTML mit HTML-Funktionen verwenden möchten, ist dies erforderlich.


1
XHTML ist nicht dasselbe wie HTML5, richtig? Wenn mein DOCTYPE nur "html" ist, brauche ich keine abschließenden Schrägstriche, richtig?
CaptSaltyJack

@CaptSaltyJack: Richtig.
Ry-

1
@CaptSaltyJack - HTML5 deckt sowohl normales HTML als auch XHTML ab. Für XHTML müssen alle Elemente geschlossen sein. Bei Browsern hat der Doctype jedoch keine Auswirkungen auf die Situation. Eine ausführlichere Erklärung finden Sie unter stackoverflow.com/questions/2662508/…
Alohci


1

Der Schrägstrich für leere Elemente ist optional.

Beide sind gültiges HTML5:

<img src="some_image.png" />

und

<img src="some_image.png">

Leere Elemente sind:

  • area
  • base
  • br
  • col
  • embed
  • hr
  • img 👍
  • input
  • link
  • meta
  • param
  • source
  • track
  • wbr

Neben interessant:

Leere Elemente können keinen Inhalt haben (da es kein End-Tag gibt, kann kein Inhalt zwischen dem Start-Tag und dem End-Tag eingefügt werden).

Weitere Informationen finden Sie unter: https://html.spec.whatwg.org/multipage/syntax.html#elements-2


Siehe auch die SO-Frage hier:
Selbstschließende Tags (ungültige Elemente) in HTML5

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.