Ainda precisamos de barras finais em HTML5?

121

No HTML5, ainda precisamos da barra final como no XHTML?

<img src="some_image.png" />

O validator.w3.org não reclamou se eu o deixei cair, nem mesmo um aviso. Mas alguns documentos online parecem indicar que a barra final ainda é necessária para tags como img, link, meta, br, etc.

CaptSaltyJack
fonte
6
Ainda ? Alguma versão do HTML exigiu o fechamento de todas as tags?
Gabe
9
@Gabe XHTML 1.0 Strict precisa disso. Quero dizer, as páginas da web normalmente carregam bem, mas são consideradas inválidas.
CaptSaltyJack
3
Sim, mas esse X não está lá apenas porque X é legal, há uma lacuna entre HTML e XHTML.
1
@ Cap: Você está correto, mas isso deve ser um problema se seu doctype indicar XHTML.
Gabe

Respostas:

81

img tags são elementos nulos e, portanto, não precisam de uma tag final.

Área de elementos nulos, base, br, col, comando, incorporar, hora, img, entrada, keygen, link, meta, param, fonte, faixa, wbr

...

Os elementos nulos têm apenas uma tag de início; as tags finais não devem ser especificadas para elementos nulos.

W3C | WHATWG

Dito isto, não é uma análise rigorosa no HTML5, portanto não causará nenhum dano grave.

Brian R. Bondy
fonte
Apenas curioso, porque meu editor (Komodo) recua se eu digitar '<img src = "x">' e pressionar enter. Ele espera a barra final no modo HTML5 e eu queria ter certeza de que esse era o comportamento correto.
CaptSaltyJack
5
Como HTML, não XHTML, não é necessário. Felizmente, os analisadores ainda entendem bem as barras finais no estilo XHTML, então não há mal em deixá-las lá. Facilita a conversão para trás em XHTML, se necessário por qualquer motivo.
Nightfirecat
4
@FreeRadical: uma barra final é opcional para um elemento nulo, mas uma tag final seria inválida.
Ry-
25
Enquanto a pergunta é sobre barras finais (por exemplo <br/), esta resposta se refere apenas a tags finais (por exemplo <br></br>).
Free Radical
12
@FreeRadical está correto. Esta resposta é tecnicamente incorreta, porque confunde an ending slashe an end tag, portanto, entende mal os parágrafos de especificação que cita. Isso leva à confusão de @ YannisDran. A @minitech declara corretamente o que é verdadeiro.
Página
94

No HTML 5, a barra é opcional em elementos nulos img(estou adicionando isso porque a resposta atualmente aceita apenas diz: "tags finais não devem ser especificadas para elementos nulos" e não trata de barras invertidas em elementos nulos).

Citação de http://www.w3.org/TR/html5/syntax.html#start-tags (número 6):

Então, se o elemento for um dos elementos nulos, ou se for um elemento estranho, poderá haver um único caractere "/" (U + 002F). Esse caractere não tem efeito em elementos nulos, mas em elementos externos, ele marca a tag de início como fechamento automático.

Radical livre
fonte
Isso não é coisa do HTML5. Na verdade, nas versões anteriores do HTML <br/>ou <img ... />havia erros.
jj
@jj Cito os documentos HTML5, então não entendo por que não acho que não seja HTML5. E, de fato, em outras versões, tais erros foram cortados.
Free Radical
Claro, eu quis dizer " ainda precisamos de barras finais em HTML5" é a pergunta errada. Talvez eu escreva uma resposta completa com alguns links históricos algum dia. No IIRC, foi uma decisão difícil para Ian Hickson (o editor de HTML) permitir barras invertidas no HTML5.
jj
2

Não. O HTML nunca foi necessário, mesmo antes do HTML5. Se você planeja usar o XHTML com recursos HTML, sim, é necessário.

Ry-
fonte
1
XHTML não é o mesmo que HTML5, correto? Se meu DOCTYPE é apenas "html", não preciso das barras finais, correto?
CaptSaltyJack
@CaptSaltyJack: Correto.
Ry-
1
@CaptSaltyJack - HTML5 abrange HTML e XHTML comuns. O XHTML requer que todos os elementos sejam fechados, mas para os navegadores, o doctype não afeta a situação. Para uma explicação mais completa, consulte stackoverflow.com/questions/2662508/…
Alohci
2

De acordo com as tags de início, elas são opcionais.

Josh Lee
fonte
1

A barra final para elementos nulos é opcional.

Ambos são HTML5 válidos:

<img src="some_image.png" />

e

<img src="some_image.png">

Os Elementos de Vazio são:

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

Além de interessante:

Os elementos nulos não podem ter nenhum conteúdo (como não há tag final, nenhum conteúdo pode ser colocado entre a tag inicial e a tag final).

Mais detalhes em: https://html.spec.whatwg.org/multipage/syntax.html#elements-2


Veja também a pergunta SO aqui:
Tags de fechamento automático (elementos nulos) em HTML5

Kai Noack
fonte