Abbiamo ancora bisogno delle barre finali in HTML5?


122

In HTML5, abbiamo ancora bisogno della barra finale come in XHTML?

<img src="some_image.png" />

validator.w3.org non si è lamentato se l'ho lasciato cadere, nemmeno un avvertimento. Ma alcuni documenti online sembrano indicare che la barra finale è ancora necessaria per tag come img, link, meta, br, ecc.


6
Ancora ? Qualche versione di HTML richiedeva la chiusura di tutti i tag?
Gabe

9
@Gabe XHTML 1.0 Strict ne ha bisogno. Voglio dire, le pagine web di solito si caricano bene, ma è considerato non valido.
CaptSaltyJack

3
Sì, ma quell'X non è lì solo perché X è fantastico, c'è un bel divario tra HTML e XHTML.

1
@Capt: Lei ha ragione, ma che dovrebbe solo essere un problema se il doctype indica XHTML.
Gabe

Risposte:


80

img i tag sono elementi vuoti, quindi non hanno bisogno di un tag di fine.

Area degli elementi vuoti, base, br, col, command, embed, hr, img, input, keygen, link, meta, param, source, track, wbr

...

Gli elementi Void hanno solo un tag di inizio; i tag finali non devono essere specificati per gli elementi void.

W3C | WHATWG

Detto questo non è un'analisi rigorosa in HTML5, quindi non farà alcun danno grave.


Sono solo curioso, perché il mio editor (Komodo) fa il rientro se digito "<img src =" x ">" e premo invio. Si aspetta la barra finale in modalità HTML5 e volevo assicurarmi che questo fosse un comportamento corretto.
CaptSaltyJack

5
Questo è HTML, non XHTML, quindi non è richiesto. Fortunatamente, i parser capiscono ancora bene le barre finali in stile XHTML, quindi non c'è nulla di male a lasciarlo lì. Significa convertire più facilmente all'indietro in XHTML, se necessario per qualsiasi motivo.
Nightfirecat

4
@FreeRadical: una barra finale è facoltativa per un elemento void, ma un tag di fine non sarebbe valido.
Ry-

26
Sebbene la domanda riguardi le barre finali (ad esempio <br/), questa risposta si riferisce solo ai tag finali (ad esempio <br></br>).
Radicale gratuito

12
@FreeRadical è corretto. Questa risposta è tecnicamente corretta, perché confonde an ending slashcon an end tag, e, quindi, fraintende paragrafi spec che cita. Questo porta alla confusione di @ YannisDran. @minitech afferma correttamente cosa è vero.
ToolmakerSteve

94

In HTML 5, la barra di chiusura è facoltativa su elementi void come img(sto aggiungendo questo perché la risposta attualmente accettata dice solo: "i tag finali non devono essere specificati per elementi void" e non affronta le barre di chiusura negli elementi void).

Citazione da http://www.w3.org/TR/html5/syntax.html#start-tags (numero 6):

Quindi, se l'elemento è uno degli elementi void, o se l'elemento è un elemento estraneo, potrebbe esserci un singolo carattere "/" (U + 002F). Questo carattere non ha effetto sugli elementi void, ma sugli elementi esterni contrassegna il tag di inizio come chiusura automatica.


Questa non è una cosa HTML5. In realtà, nelle versioni precedenti di HTML <br/>o <img ... />erano errori.
jj

@jj Cito i documenti HTML5, quindi non capisco perché non penso che non sia HTML5. E infatti, in altre versioni, tali tagli erano errori.
Radicale gratuito il

Certo, volevo dire "abbiamo ancora bisogno delle barre finali in HTML5" è la domanda sbagliata. Forse un giorno scriverò una risposta completa con alcuni collegamenti storici. IIRC è stata una decisione difficile per Ian Hickson (l'editor HTML) consentire le barre finali in HTML5.
jj

2

No. HTML non l'ha mai richiesto, nemmeno prima di HTML5. Se prevedi di utilizzare XHTML con funzionalità HTML, sì, è necessario.


1
XHTML non è lo stesso di HTML5, giusto? Se il mio DOCTYPE è solo "html", non ho bisogno delle barre finali, giusto?
CaptSaltyJack

@CaptSaltyJack: corretto.
Ry-

1
@CaptSaltyJack - HTML5 copre sia HTML ordinario che XHTML. XHTML richiede la chiusura di tutti gli elementi, ma per i browser il doctype non ha alcun effetto sulla situazione. Per una spiegazione più completa, vedere stackoverflow.com/questions/2662508/...
Alohci


1

La barra finale per gli elementi void è facoltativa.

Entrambi sono HTML5 validi:

<img src="some_image.png" />

e

<img src="some_image.png">

Gli elementi vuoti sono:

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

Oltre interessante:

Gli elementi Void non possono avere alcun contenuto (poiché non esiste un tag di fine, nessun contenuto può essere inserito tra il tag di inizio e il tag di fine).

Maggiori dettagli su: https://html.spec.whatwg.org/multipage/syntax.html#elements-2


Vedi anche la domanda SO qui:
tag a chiusura automatica (elementi vuoti) in HTML5

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.