Je pense que cette citation du Projet de référence HTML 5 fournit la réponse :
3.2.2.2 Éléments vides
Le terme éléments vides est utilisé pour désigner les éléments qui doivent être vide . Ces exigences ne s'appliquent qu'à la syntaxe HTML. En XHTML, tous ces éléments sont traités comme des éléments normaux, mais doivent être marqués comme des éléments vides.
Il est interdit à ces éléments de contenir le moindre contenu. En HTML, ces éléments ont un balise de départ seulement. Le site étiquette à fermeture automatique peut être utilisée. Le site étiquette finale doit être omis car l'élément est automatiquement fermé par l'analyseur syntaxique.
Exemple HTML :
Un élément vide dans la syntaxe HTML. Il n'est pas autorisé dans la syntaxe XHTML.
<hr>
Exemple :
Un élément void utilisant la syntaxe des balises à fermeture automatique compatible avec HTML et XHTML.
<hr/>
Exemple XHTML :
Un élément void utilisant la syntaxe XHTML-only avec une balise de fin explicite. Ceci n'est pas autorisé pour les éléments void dans la syntaxe HTML.
<hr></hr>
En d'autres termes :
-
HTML 5 non valide :
<IMG></IMG>
-
HTML 5 valide :
<IMG>
, <IMG/>
Et si le HTML interdit certaines balises de fermeture, xhtml nécessite les :
-
Invalide xhtml :
<img>
-
xhtml valide :
<img></img>
o <img/>
D'autres éléments qui sont interdit d'avoir une balise de fermeture en HTML :
Élément
HTML valide
xhtml valide
AREA
<AREA>
<AREA></AREA>
BASE
<BASE>
<BASE></BASE>
BASEFONT
<BASEFONT>
<BASEFONT></BASEFONT>
BR
<BR>
<BR></BR>
COL
<COL>
<COL></COL>
CADRE
<FRAME>
<FRAME></FRAME>
RH
<HR>
<HR></HR>
IMG
<IMG>
<IMG></IMG>
INPUT
<INPUT>
<INPUT></INPUT>
ISINDEX
<ISINDEX>
<ISINDEX></ISINDEX>
LIEN
<LINK>
<LINK></LINK>
META
<META>
<META></META>
PARAM
<PARAM>
<PARAM></PARAM>
Le fait que le HTML interdit certaines balises de fermeture, tandis que xhtml nécessite c'est le problème de xhtml. Si vous écrivez du HTML, vous suivez les règles du HTML.
Dans le même temps, les browers ont renoncé à faire respecter les normes, car tout le monde se trompe. Ce n'est pas évident :
- que
</BR>
es interdit
- que
</P>
es en option
- y
</SPAN>
es requis
Et puis xhtml est arrivé, avec sa règle XML selon laquelle chaque doit avoir une balise de fermeture, et les gens ont simplement supposé que le HTML était la même chose. Les normes ont donc abandonné, et ont été révisées plus tard pour lever les bras devant la réalité.
7 votes
Quelle que soit celle que vous utilisez aujourd'hui, n'oubliez pas que certaines technologies d'assistance (par exemple, les lecteurs d'écran) l'annonceront probablement. NVDA dit "blanc", par exemple. Les utilisateurs de lecteurs d'écran ne tireront probablement rien d'autre que du bruit de cette annonce supplémentaire. Pensez à ajouter un
role="presentation"
sauf dans les rares cas où un saut de ligne fait office de "contenu".0 votes
Selon la spécification actuelle, "6. alors, 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 SOLIDUS (/). Ce caractère n'a aucun effet sur les éléments nuls" html.spec.whatwg.org/multipage/syntaxe.html#début-balises
0 votes
@brennanyoung Lorsque le demandeur n'écrit pas une page sur le html, les lecteurs d'écran ne prononcent pas du tout la balise. Ils peuvent faire une petite pause pour le saut de ligne, mais cette pause sera la même pour la version auto-fermée et la version simple.
0 votes
J'aimerais que ce soit vrai ! Il m'est arrivé que la balise soit prononcée comme "blank" par NVDA, et ce n'était pas dans une page sur les balises html. Les balises de saut de ligne apparaissant dans le contenu de repli du canevas ont tendance à avoir ce problème par exemple, mais il peut y avoir d'autres cas.
0 votes
J'aimerais ajouter que, pour le HTML5
<br>
devrait suffire, j'ai rencontré quelques problèmes dans un ou plusieurs frameworks frontaux lors de l'utilisation de<br>
. Par conséquent, juste au cas où, il est préférable d'utiliser<br/>
(o<br />
l'espace n'a pas d'importance)