Arreglo rapido:
Para eliminar el espacio debajo de la imagen , puede:
- Establezca la propiedad de alineación vertical de la imagen en
vertical-align: bottom;
vertical-align: top;
overtical-align: middle;
- Establezca la propiedad de visualización de la imagen en
display:block;
Vea el siguiente código para una demostración en vivo:
#vAlign img {
vertical-align :bottom;
}
#block img{
display:block;
}
div {border: 1px solid red;width:100px;}
img {width:100px;}
<p>No fix:</p>
<div><img src="http://i.imgur.com/RECDV24.jpg" /></div>
<p>With vertical-align:bottom; on image:</p>
<div id="vAlign"><img src="http://i.imgur.com/RECDV24.jpg" /></div>
<p>With display:block; on image:</p>
<div id="block"><img src="http://i.imgur.com/RECDV24.jpg" /></div>
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 los inline-block
elementos (como puede alinearlos verticalmente, proporcione ellos una altura, margen superior / inferior y relleno, transforma ...).
Esto también significa que:
<img>
no tiene línea base, por lo que cuando las imágenes se usan en un contexto de formato en línea con alineación vertical: línea base, la parte inferior de la imagen se colocará en la línea base del texto.
( fuente: MDN , énfasis mío )
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:
div{border:1px solid red;font-size:30px;}
img{width:100px;height:auto;}
<div>
<img src="http://i.imgur.com/RECDV24.jpg" />jpq are letters with descender
</div>
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:
div {width: 100px;border: 1px solid red;}
img {width: 100px;height: auto;}
.block img{
display:block;
}
.bottom img{
vertical-align:bottom;
}
<p>Default:</p>
<div>
<img src="http://i.imgur.com/RECDV24.jpg" />
</div>
<p>With display:block;</p>
<div class="block">
<img src="http://i.imgur.com/RECDV24.jpg" />
</div>
<p>With vertical-align:bottom;</p>
<div class="bottom">
<img src="http://i.imgur.com/RECDV24.jpg" />
</div>