<img src='stackoverflow.png'>
<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />
Lequel ou lesquels d'entre eux sont corrects ?
<img src='stackoverflow.png'>
<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />
Lequel ou lesquels d'entre eux sont corrects ?
Celui-ci est HTML5 valide et tout va bien sans le fermer. C'est ce qu'on appelle un élément vide :
<img src='stackoverflow.png'>
Les balises suivantes sont des balises XHTML valides. Elles doivent être fermées. La dernière balise est également valable en HTML 5 :
<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />
Il n'est pas seulement valide en HTML5, mais plutôt en HTML4 également. Le HTML ne requiert pas d'éléments "void" auto-fermants comme vous l'avez dit. +1 pour la réponse cohérente.
Le HTML5 ou XHTML ne sera pas validé par le vérificateur HTML du W3C s'il cible 4.01 Transitional et plus. Voir aussi Service de validation du balisage du W3C . Vous devez utiliser celui <img src='stackoverflow.png'>
(si cela vous importe).
Il est exact que <img />
est valide en [X]HTML/XML, bien que l'utilisation du XHTML soit très rare de nos jours et si votre serveur sert les pages en tant que text/html
vous n'avez qu'à vous soucier d'écrire du HTML valide. Les chances de devoir migrer une application HTML vers XHTML sont proches de zéro.
La réponse ci-dessus ne sera pas validée par le vérificateur HTML du W3C si elle cible 4.01 Transitional et plus. Voir aussi Service de validation du balisage du W3C . Je pense que la réponse ci-dessus nécessite HTML5 ou XHTML. Pour éviter les échecs de validation, vous devez utiliser le format <img src='stackoverflow.png'>
(si cela vous importe).
@FabrícioMatté Vous sous-estimez sévèrement le xhtml dans son utilisation réelle. Plus l'entreprise est grande, plus il est probable qu'elle travaille avec du xhtml plutôt que du html, ou du html5 formaté comme du xhtml (pour une analyse facile/rapide), ou que vous travaillez avec d'autres choses comme des microdonnées, ou un balisage amélioré comme ixbrl.
En fait, seul le premier est valide en HTML5
<img src='stackoverflow.png'>
Seuls les deux derniers sont valides en XHTML.
<img src='stackoverflow.png'></img>
<img src='stackoverflow.png' />
(Bien que cela ne soit pas strictement nécessaire, un alt
doit _généralement_ aussi être inclus).
Cela dit, votre page HTML5 s'affichera probablement comme prévu, car les navigateurs réécriront ou interpréteront votre html en fonction de ce qu'ils pensent être votre intention. C'est mai signifie qu'il transforme une balise, par exemple, de<div />
sur <div></div>
. Ou peut-être qu'il ignore simplement le slash final sur <img ... />
.
voir 2016 : Servez HTML5 comme XHTML 5.0 pour la validation de l'héritage.
voir : discussion de 2011 et liens supplémentaires ici, bien qu'au fil du temps certains éléments aient pu changer
Cela s'explique en partie par le fait que les navigateurs s'efforcent de corriger les erreurs. C'est aussi parce qu'il y a beaucoup de confusion au sujet des balises auto-fermantes et des balises void. Enfin, la spécification a changé, ou n'a pas toujours été claire, et les navigateurs essaient d'être rétrocompatibles.
Donc, même si vous pouvez probablement vous en sortir avec n'importe laquelle de ces trois options,
seule la première adhère à la norme HTML5, et est garantie de passer un validateur HTML5.
Une bonne stratégie pourrait consister à :
Voici une liste de balises qui ne doivent pas être fermées en HTML5 :
<br> <hr> <input>
<img> <link> <source>
<col> <area> <base>
<meta> <embed> <param>
<track> <wbr> <keygen> (HTML 5.2 Draft removed)
C'est techniquement incorrect. Un élément void à fermeture automatique est parfaitement valide en html 5. Voir html.spec.whatwg.org/#start-tags ce qui rendrait <img src='stackoverflow.png' />
valide dans toutes les versions de XHTML et HTML 5.
@RobertMcKee Non, c'est techniquement correct. Bien que l'utilisation de la barre oblique fermante soit autorisée et ne soit pas considérée comme une erreur, aucune spécification HTML n'indique qu'elle doit être utilisée. Elle est autorisée pour ne pas briser les anciens sites web basés sur XHTML/XML, mais vous ne trouverez nulle part une spécification HTML indiquant, par des mots ou des exemples, l'utilisation d'une barre oblique fermante sur ces balises lorsqu'elles sont spécifiées par le W3C ou le WHATWG.
@Rob D'après le document du WHATWG que j'ai mis en lien ci-dessus à la section 12.1.2.1.6 - Then, if the element is one of the void elements, or if the element is a foreign element, then there may be a single U+002F SOLIDUS character (/). This character has no effect on void elements, but on foreign elements it marks the start tag as self-closing.
img est un élément vide selon la section 12.1.2
Les deux sont la bonne réponse. HTML5 suit des règles strictes et en HTML5 nous pouvons fermer toutes les balises. Donc, cela dépend de vous d'utiliser HTML5 ou HTML et de suivre une réponse appropriée.
<img src='stackoverflow.png'>
<img src='stackoverflow.png' />
La deuxième propriété est plus appropriée.
Le premier est pas le meilleur en ce sens qu'il n'est pas spécifié dans tous HTML, tandis que le second est. Le premier n'est autorisé que pour des raisons historiques ! (Compatibilité avec l'utilisation du XHTML/XML dans les sites web plus anciens qui s'effondreraient si les navigateurs ne l'autorisaient pas).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
10 votes
La question est "Comment fermer correctement une balise <img> ?". C'est une vraie question, et les réponses sont utiles. Cette question n'aurait pas dû être fermée.
4 votes
La question, actuellement, est bien. Elle est no ambiguë, vague, incomplète, trop large ou rhétorique. Il y a également une excellente réponse ci-dessous.
0 votes
Je ne sais pas laquelle des réponses suivantes est correcte, mais il est intéressant de noter que l'inspecteur de code de Firefox ajoute le </img>à la fin de la balise si vous ne le mettez pas là. Et IE ne le fait pas. C'est significatif dans mon univers.
0 votes
P.S. Dreamweaver insère la balise XHTML />.