¿Por qué en el siguiente código la altura de la div
es mayor que la altura de la img
? Hay un espacio debajo de la imagen, pero no parece ser un relleno / margen.
¿Cuál es el espacio o espacio adicional debajo de la imagen?
#wrapper {
border: 1px solid red;
width:200px;
}
img {
width:200px;
}
<div id="wrapper">
<img src="http://i.imgur.com/RECDV24.jpg" />
</div>
Respuestas:
De forma predeterminada, una imagen se representa en línea, como una letra, por lo que se ubica en la misma línea en la que se ubican a, b, cyd.
Hay espacio debajo de esa línea para los descendientes que encuentre en letras como g, j, p y q.
Usted puede:
vertical-align
de la imagen para colocar en otro lugar (por ejemplo lamiddle
) odisplay
para que no esté en línea.La imagen incluida es de dominio público y proviene de Wikimedia Commons
fuente
line-height
. Establecerline-height
la dimensión deseada también superaría el espacio en blanco no deseado.Otra opción sugerida aquí es establecer el estilo de la imagen como
style="display: block;"
fuente
inline-block
si aún desea que se muestre en línea como lo hacen normalmente las imágenes.inline-block
no parece estar funcionando.Arreglo rapido:
Para eliminar el espacio debajo de la imagen , puede:
vertical-align: bottom;
vertical-align: top;
overtical-align: middle;
display:block;
Vea el siguiente código para una demostración en vivo:
Mostrar fragmento de código
Explicación: ¿por qué hay un espacio debajo de la imagen?
El espacio o espacio adicional debajo de la imagen no es un error o problema, es el comportamiento predeterminado. La causa raíz es que las imágenes son elementos reemplazados ( ver elementos reemplazados MDN ). Esto les permite "actuar como una imagen" y tener sus propias dimensiones intrínsecas, relación de aspecto ...
Los navegadores calculan su propiedad de visualización
inline
pero les otorgan un comportamiento especial que los acerca a losinline-block
elementos (como puede alinearlos verticalmente, proporcione ellos una altura, margen superior / inferior y relleno, transforma ...).Esto también significa que:
Como los navegadores calculan de manera predeterminada la propiedad de alineación vertical a la línea de base, este es el comportamiento predeterminado. La siguiente imagen muestra dónde se encuentra la línea de base en el texto:
( Fuente de la imagen )
Los elementos alineados con la línea de base deben mantener espacio para los descendientes que se extienden por debajo de la línea de base (como
j, p, g ...
) como se puede ver en la imagen de arriba. En esta configuración, la parte inferior de la imagen está alineada en la línea base, como puede ver en este ejemplo:Es por eso que el comportamiento predeterminado de la
<img>
etiqueta crea un espacio en la parte inferior de su contenedor y por qué al cambiar la propiedad de alineación vertical o la propiedad de visualización se elimina como en la siguiente demostración:fuente
line-height:0;
pero no considero que esto sea una buena solución en comparación con el cambio de las propiedades de alineación vertical o visualizaciónfont-size:0
: establecen el tamaño de fuente al tamaño mínimo en la configuración del usuario.middle
text-top
sub
super
posición en la foto no es la correcta.También se puede anular la altura de línea de los padres:
Todas las correcciones: http://jsfiddle.net/FaPFv/
fuente
Todo lo que tiene que hacer es asignar esta propiedad:
Las imágenes por defecto tienen esta propiedad:
fuente
Puede usar varios métodos para este problema, como
Utilizando
line-height
Utilizando
display: flex
El uso de
display:
block
,table
,flex
yinherit
fuente
line-height
truco muy descuidado , o al menos deje en claro por qué es la peor "solución" de todas: en el momento en que alguien coloca texto junto a la imagen (especialmente líneas múltiples preformateadas con etiquetas BR), se encontrarán en una situación peor de la que comenzaron.Solía
line-height:0
y funciona bien para mí.fuente
<BR>
) al lado de la imagen, tendrá un desorden mal colocado, superpuesto o sobresaliente.Descubrí que funciona muy bien usando display: block; en la imagen y alinear verticalmente: arriba; en el texto
o puede editar el código un JS FIDDLE
fuente
Acabo de agregar
float:left
a div y funcionófuente
float:left
causas de configuracióndisplay:block