web-dev-qa-db-fra.com

Pourquoi la balise <img> n'est-elle pas fermée en HTML?

Par curiosité, pourquoi la balise < img > n'est pas fermée dans [~ # ~] html [~ # ~] ?

<img src="smiley.gif" alt="Smiley face" height="42" width="42">

J'ai également remarqué que les balises < img > sont explicitement fermées dans [~ # ~] xhtml [~ # ~] ...

<img src="smiley.gif" alt="Smiley face" height="42" width="42"/>

W3Schools: Image Tag

37
ѺȐeallү

Historiquement, HTML était basé sur SGML qui permet d'omettre les balises sous certaines conditions.

Étant donné que l'élément <img> Ne peut pas avoir de nœuds enfants, il est défini comme VIDE et la balise de fin est interdite (car elle ne servirait à rien).

XHTML est du HTML exprimé en XML, et XML ne prend pas en charge les balises facultatives ou interdites (bien qu'il permette à une balise à fermeture automatique de se substituer à une paire de balises de début et de fin), elle doit donc y être explicitement fermée.

HTML 5 est rétrocompatible avec les versions de HTML basées sur SGML.

36
Quentin

Le <img> la balise représente ce que l'on appelle un élément void (voir spécification HTML5 ), ainsi appelé car il ne peut pas avoir tout contenu (contrairement, disons <a> ou <div>). Il n'y a donc aucune raison syntaxique pour laquelle il devrait être fermé en HTML.

XHTML, cependant, est basé sur XML, où chaque balise doit être fermée.

17
kmoe

C'est ce qu'on appelle un élément void qui signifie simplement que l'élément ne doit pas avoir de contenu (mais peut avoir des attributs). La spécification HTML5 a ceci à dire sur les éléments void:

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 peut un seul caractère "/" (U + 002F). Ce personnage n'a aucun effet sur les éléments vides

Il n'y a donc aucune raison réelle d'avoir le seul caractère "/" (U + 002F), mais il ne cassera rien s'il est inclus.

4
Josh Davenport

<img> tag est essentiellement un élément Void.

Pour votre compréhension:

L'image n'a pas de contenu. La balise d'image donnera simplement le chemin à partir duquel la ressource sera chargée via l'attribut src. Ainsi, il ne nécessite aucun élément final.

Tandis que <img src="smiley.gif" alt="Smiley face" height="42" width="42"/>, ce code est pour la version XHTML.

2
Azeez