J'ai lu quelque part que cet <img>
élément se comporte comme les deux. Si c'est correct, quelqu'un pourrait-il expliquer avec des exemples?
J'ai lu quelque part que cet <img>
élément se comporte comme les deux. Si c'est correct, quelqu'un pourrait-il expliquer avec des exemples?
Réponses:
C'est vrai, ce sont les deux - ou plus précisément, ce sont des éléments "inline block". Cela signifie qu'ils coulent en ligne comme du texte, mais ont également une largeur et une hauteur comme des éléments de bloc.
En CSS, vous pouvez définir un élément sur display: inline-block
pour qu'il reproduise le comportement des images *.
Les images et les objets sont également appelés éléments «remplacés», car ils n'ont pas de contenu en soi, l'élément est essentiellement remplacé par des données binaires.
* Notez que les navigateurs utilisent techniquement display: inline
(comme on le voit dans les outils de développement) mais ils accordent un traitement spécial aux images. Ils suivent toujours tous les traits de inline-block
.
img
éléments ne sont pas inline-block
mais en réalité des inline
éléments. Vous pouvez vérifier cela dans un navigateur moderne en cliquant avec le bouton droit sur une image, en cliquant sur "Inspecter l'élément", puis en affichant le style calculé, qui s'affichera display: inline
. Il n'y a pas de contexte de bloc à l'intérieur de la balise, il n'est donc pas correct de l'appeler inline-block
. Pour plus d'informations sur les éléments en ligne remplacés, consultez la réponse de Quentin et cet article MDN .
img
éléments sont en ligne - les outils de développement de Google Chrome montrent les img
éléments comme étant en ligne. Cet article est le seul endroit que j'ai trouvé jusqu'à présent qui indique qu'ils le sont à la inline-block
place. Fait intéressant, je n'ai trouvé aucune autorité qui dit qu'ils le sont inline
non plus. Est-ce que comment traiter la balise dépend de l'implémentation, peut-être?
display:inline-block
.
Un img
élément est un élément en ligne remplacé .
Il se comporte comme un élément en ligne (car c'est le cas), mais certaines généralisations sur les éléments en ligne ne s'appliquent pas aux img
éléments.
par exemple
Généralisation: "La largeur ne s'applique pas aux éléments en ligne"
Ce que dit réellement la spécification : "S'applique à: tous les éléments sauf les éléments en ligne, les lignes de tableau et les groupes de lignes non remplacés"
Puisqu'une image est un élément en ligne remplacé, elle s'applique.
Les éléments IMG sont en ligne, ce qui signifie qu'à moins qu'ils ne soient flottants, ils couleront horizontalement avec du texte et d'autres éléments en ligne.
Ce sont des éléments "blocs" en ce sens qu'ils ont une largeur et une hauteur. Mais ils se comportent plus comme des "blocs en ligne" à cet égard.
Pour presque toutes les raisons, considérez-les comme un élément en ligne avec une largeur définie. Fondamentalement, vous êtes libre de dicter comment vous souhaitez que les images s'affichent en utilisant CSS. Je définis généralement quelques classes d'images comme ceci:
img.center {display:block;margin:0 auto;}
img.left {float:left;margin-right:10px;}
img.right {float:right;margin-left:10px;}
img.border {border:1px solid #333;}
C'est vrai, ce sont les deux - ou plus précisément, ce sont des éléments "inline block". Cela signifie qu'ils coulent en ligne comme du texte, mais ont également une largeur et une hauteur comme des éléments de bloc.