He leído en alguna parte que ese <img>
elemento se comporta como ambos. Si es correcto, ¿alguien podría explicarlo con ejemplos?
He leído en alguna parte que ese <img>
elemento se comporta como ambos. Si es correcto, ¿alguien podría explicarlo con ejemplos?
Respuestas:
Es cierto, son ambos, o más precisamente, son elementos de "bloque en línea". Esto significa que fluyen en línea como texto, pero también tienen un ancho y una altura como elementos de bloque.
En CSS, puede establecer un elemento para display: inline-block
que reproduzca el comportamiento de las imágenes *.
Las imágenes y los objetos también se conocen como elementos "reemplazados", ya que no tienen contenido per se, el elemento se reemplaza esencialmente por datos binarios.
* Tenga en cuenta que los navegadores utilizan técnicamente display: inline
(como se ve en las herramientas de desarrollador) pero están dando un tratamiento especial a las imágenes. Todavía siguen todos los rasgos de inline-block
.
img
elementos no son inline-block
sino inline
elementos. Puede verificar esto en un navegador moderno haciendo clic derecho en una imagen, haciendo clic en "Inspeccionar elemento", luego visualizando el estilo calculado, que se mostrará display: inline
. No hay contexto de bloque dentro de la etiqueta, por lo que no es correcto llamarlo inline-block
. Para obtener más información sobre los elementos en línea reemplazados, consulte la respuesta de Quentin y este artículo de MDN .
img
elementos estén en línea: las herramientas de desarrollo de Google Chrome muestran los img
elementos como en línea. Esta publicación es el único lugar que he encontrado hasta ahora que dice que están en su inline-block
lugar. Curiosamente, tampoco he encontrado ninguna autoridad que diga que lo son inline
. ¿Cómo tratar la etiqueta depende de la implementación, tal vez?
display:inline-block
.
Un img
elemento es un elemento en línea reemplazado .
Se comporta como un elemento en línea (porque lo es), pero algunas generalizaciones sobre elementos en línea no se aplican a los img
elementos.
p.ej
Generalización: "El ancho no se aplica a los elementos en línea"
Lo que en realidad dice la especificación : "Se aplica a: todos los elementos excepto elementos en línea no reemplazados, filas de tabla y grupos de filas"
Como una imagen es un elemento en línea reemplazado, se aplica.
Para casi todos los propósitos, piense en ellos como un elemento en línea con un conjunto de ancho. Básicamente, usted es libre de dictar cómo desea que se muestren las imágenes usando CSS. Generalmente establezco algunas clases de imágenes de esta manera:
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;}
Es cierto, son ambos, o más precisamente, son elementos de "bloque en línea". Esto significa que fluyen en línea como texto, pero también tienen un ancho y una altura como elementos de bloque.