Avons-nous encore besoin de barres obliques de fin en HTML5?


122

En HTML5, avons-nous encore besoin de la barre oblique de fin comme en XHTML?

<img src="some_image.png" />

validator.w3.org ne s'est pas plaint si je l'ai laissé tomber, pas même un avertissement. Mais certains documents en ligne semblent indiquer que la barre oblique de fin est toujours requise pour les balises telles que img, link, meta, br, etc.


6
Toujours ? Une version de HTML nécessitait-elle la fermeture de toutes les balises?
Gabe

9
@Gabe XHTML 1.0 Strict en a besoin. Je veux dire, les pages Web se chargeront bien généralement, mais elles sont considérées comme invalides.
CaptSaltyJack

3
Oui, mais ce X n'est pas seulement là parce que X est cool, il y a un grand écart entre HTML et XHTML.

1
@Capt: Vous avez raison, mais cela ne devrait seulement être un problème si votre DOCTYPE indique XHTML.
Gabe

Réponses:


80

img Les balises sont des éléments vides et n'ont donc pas besoin de balise de fin.

Zone des éléments vides, base, br, col, commande, incorporer, hr, img, entrée, keygen, lien, méta, param, source, piste, wbr

...

Les éléments vides n'ont qu'une balise de début; Les balises de fin ne doivent pas être spécifiées pour les éléments void.

W3C | WHATWG

Cela étant dit, ce n'est pas une analyse stricte en HTML5, donc cela ne fera aucun mal majeur.


Juste curieux, car mon éditeur (Komodo) indente si je tape '<img src = "x">' et appuyez sur Entrée. Il attend la barre oblique de fin en mode HTML5 et je voulais m'assurer que c'était le bon comportement.
CaptSaltyJack

5
C'est du HTML, pas du XHTML, donc ce n'est pas obligatoire. Heureusement, les analyseurs comprennent toujours très bien les barres obliques de style XHTML, il n'y a donc aucun mal à les laisser là. Cela signifie une conversion plus facile vers XHTML, si nécessaire pour une raison quelconque.
Nightfirecat

4
@FreeRadical: Une barre oblique de fin est facultative pour un élément void, mais une balise de fin serait invalide.
Ry-

26
Alors que la question porte sur les barres obliques de fin (par exemple <br/), cette réponse se réfère uniquement aux balises de fin (par exemple <br></br>).
Free Radical

12
@FreeRadical est correct. Cette réponse est techniquement incorrecte, car elle confond an ending slashavec an end tagles paragraphes de spécification qu'elle cite et les comprend donc mal. Cela conduit à la confusion de @ YannisDran. @minitech indique correctement ce qui est vrai.
ToolmakerSteve

94

En HTML 5, la barre oblique de fermeture est facultative sur les éléments vides tels que img(j'ajoute ceci car la réponse actuellement acceptée dit seulement: "les balises de fin ne doivent pas être spécifiées pour les éléments vides", et ne traite pas les barres obliques de fermeture dans les éléments vides).

Citant http://www.w3.org/TR/html5/syntax.html#start-tags (numéro 6):

Ensuite, si l'élément est l'un des éléments vides, ou si l'élément est un élément étranger, alors il peut y avoir un seul caractère "/" (U + 002F). Ce caractère n'a aucun effet sur les éléments void, mais sur les éléments étrangers, il marque la balise de début comme à fermeture automatique.


Ce n'est pas une chose HTML5. En fait, dans les versions antérieures de HTML <br/>ou <img ... />étaient des erreurs.
jj

@jj Je cite les documents HTML5, donc je ne comprends pas pourquoi je ne pense pas que ce n'est pas HTML5. Et en effet, dans d'autres versions, ces coupures étaient des erreurs.
Free Radical le

Bien sûr, je voulais dire "avons-nous encore besoin de barres obliques en HTML5" est la mauvaise question. Peut-être que j'écrirai un jour une réponse complète avec quelques liens historiques. IIRC a été une décision difficile pour Ian Hickson (l'éditeur HTML) d' autoriser les barres obliques de fin en HTML5.
jj

2

Nan. Le HTML ne l'a jamais exigé, même avant HTML5. Si vous prévoyez d'utiliser XHTML avec des fonctionnalités HTML, alors oui, c'est nécessaire.


1
XHTML n'est pas le même que HTML5, n'est-ce pas? Si mon DOCTYPE est juste "html", je n'ai pas besoin des barres obliques de fin, correct?
CaptSaltyJack

@CaptSaltyJack: C'est exact.
Ry-

1
@CaptSaltyJack - HTML5 couvre à la fois le HTML ordinaire et le XHTML. XHTML nécessite que tous les éléments soient fermés, mais pour les navigateurs, le doctype n'a aucun effet sur la situation. Pour une explication plus complète, voir stackoverflow.com/questions/2662508/…
Alohci


1

La barre oblique de fin pour les éléments vides est facultative.

Les deux sont du HTML5 valide:

<img src="some_image.png" />

et

<img src="some_image.png">

Les éléments vides sont:

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

En plus intéressant:

Les éléments vides ne peuvent avoir aucun contenu (puisqu'il n'y a pas de balise de fin, aucun contenu ne peut être placé entre la balise de début et la balise de fin).

Plus de détails sur: https://html.spec.whatwg.org/multipage/syntax.html#elements-2


Voir aussi la question SO ici:
Balises à fermeture automatique (éléments vides) en HTML5

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.