tag div attribute html image doctype

html - div - El relleno/margen misterioso aparece después de la imagen en modo estricto



title html css (2)

Esto se debe a que, como lo menciona @Pawel, "de forma predeterminada, una imagen se representa en línea". Dado que está "en línea", algunos espacios a continuación se darán para caracteres como ''g, j, q, y'' etc.

Así que otra solución es simplemente configurar la imagen como bloque:

img { display:block; }

Un ejemplo está aquí: https://gist.github.com/MrCoder/450783bc33d6b412075d

Creé un nuevo documento con xhtml 1.0 y html 4.01 STRICT solo para aislar esto. Todo lo que tengo en su cuerpo es:

<div style="border: blue 3px solid;"> <img src="testimage.jpg" width="800" height="400"> </div>

El resultado es normal, excepto que hay un espacio de 5px debajo de la imagen que desaparece si cambio el doctype a transicional. También desaparece si configuro mostrar: bloquear a la imagen.

Puede ver el resultado usted mismo aquí (sé que el espacio en blanco a la derecha es normal ya que es un elemento de bloque): http://i52.tinypic.com/2prd1jd.jpg

Intenté establecer el margen / relleno en 0, incluso esto:

* { margin: 0; padding: 0; }

pero sigue siendo el mismo.

¿Alguien puede explicar este comportamiento?


Tiene que ver con la alineación vertical de la imagen. Prueba esto:

img{ vertical-align: top; }

Y el espacio se irá.

Para aclarar, si coloca un texto junto a la imagen, verá el problema. La imagen se alinea con la base del texto, pero las letras como y y g irán debajo de esa línea. El espacio extra es para aquellas letras sobresalientes.