Eliminar espacio en blanco debajo de la imagen [duplicar]


Esta pregunta ya tiene una respuesta aquí:

En Firefox solo mis miniaturas de video muestran misteriosos 2-3 píxeles de espacio en blanco entre la parte inferior de mi imagen y su borde (ver más abajo).

He intentado todo lo que se me ocurre en Firebug sin suerte.

Cómo puedo eliminar este espacio en blanco?

Captura de pantalla que muestra el espacio en blanco debajo de la imagen

Author: Ryan, 2011-10-15

9 answers

Está viendo el espacio para los descendentes (los bits que cuelgan de la parte inferior de 'y' y 'p') porque img es un elemento en línea por defecto. Esto elimina la brecha:

.youtube-thumb img { display: block; }
 439
Author: robertc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-15 00:21:34

Puede usar el código a continuación si no desea modificar el modo de bloque:

img{vertical-align:text-bottom}

O puedes usar lo siguiente como Stuart sugiere:

img{vertical-align:bottom}
 123
Author: x-freestyler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-02 12:54:22

Si desea conservar la imagen en línea, puede poner vertical-align: top o vertical-align: bottom en ella. De forma predeterminada, está alineado en la línea de base, por lo tanto, los pocos píxeles debajo de él.

 29
Author: Dave Kok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-16 15:16:17

He configurado un JSFiddle para probar varias soluciones a este problema. Basado en los criterios[vagos] de

1) Flexibilidad máxima

2) No hay comportamiento extraño

La respuesta aceptada aquí de

img { display: block; }

Que es recomendado por mucha gente (como en este excelente artículo), en realidad ocupa el cuarto lugar.

1er, 2do, y 3er lugar son todos un lanzamiento entre estos tres soluciones:

1) La solución dada por @ Dave Kok y @Hasan Gursoy:

img { vertical-align: top; } /* or bottom */

ventajas:

  • Todos los valores de visualización funcionan tanto en el padre como en img.
  • Ningún comportamiento muy extraño; cualquier hermano del img cae donde esperarías que lo hiciera.
  • Muy eficiente.

contras:

  • En el caso [perfectamente válido] de que tanto el padre como img tengan ' display: inline`, el valor de esta propiedad puede determinar la posición del padre del img (un poco extraño).

2) Establecer font-size: 0; en el elemento padre:

.parent {
    font-size: 0;
    vertical-align: top;
}
.parent > * {
    font-size: 16px;
    vertical-align: top;
}

Dado que este [tipo de] requiere vertical-align: top en el img, esto es básicamente una extensión de la 1ra solución.

ventajas:

  • Todos los valores de visualización funcionan tanto en el padre como en img.
  • Ningún comportamiento muy extraño; cualquier hermano del img cae donde esperarías que lo hiciera.
  • Corrige el espacio en blanco en línea problema para cualquier hermano del img.
  • Aunque esto todavía mueve la posición del padre en el caso de que el padre e img tengan `display: inline`, al menos ya no puedes ver el padre.

contras:

  • Código menos eficiente.
  • Esto asume el marcado "correcto"; si el img tiene nodos hermanos de texto, no aparecerán.

3) Establecer line-height: 0 en el elemento padre:

.parent {
    line-height: 0;
    vertical-align: top;
}
.parent > * {
    line-height: 1.15;
    vertical-align: top;
}

Similar al 2do. solución en que, para hacerlo completamente flexible, básicamente se convierte en una extensión de la 1a.

ventajas:

  • Se comporta como las dos primeras soluciones en todas las combinaciones de pantalla, excepto cuando el padre y el img tienen `display: inline`.

contras:

  • Código menos eficiente.
  • En el caso de que tanto el padre como img tengan `display: inline`, obtenemos todo tipo de locuras. (Tal vez jugar con la propiedad` line-height ' no es la mejor idea...)

Así que ahí lo tienen. Espero que esto ayude a alguna pobre alma.

 22
Author: bowheart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-06 04:20:29

Encontré esta pregunta y ninguna de las soluciones aquí funcionó para mí. Encontré otra solución que se deshizo de los huecos debajo de las imágenes en Chrome. Tuve que agregar line-height:0; al selector img en mi CSS y los huecos debajo de las imágenes desaparecieron.

Loco que este problema persiste en los navegadores en 2013.

 10
Author: ZivBK1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-25 00:12:49

Tenía este problema, encontró la solución perfecta en otro lugar si no quiere que use bloque solo agregue

img { vertical-align: top }
 7
Author: Andrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-23 08:29:50
.youtube-thumb img {display:block;} or .youtube-thumb img {float:left;}
 5
Author: Brynner Ferreira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-16 15:48:16

Dar la altura del div .youtube-thumb la altura de la imagen. Eso debería establecer el problema en el navegador Firefox.

.youtube-thumb{ height: 106px }
 0
Author: Mahesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-15 00:16:00

Como se indicó anteriormente, la imagen se trata como texto, por lo que la parte inferior es para acomodar a aquellos molestos: "p,q,y,g,j"; la solución más fácil es asignar el img display:block; en su css.

Pero esto inhibe el comportamiento estándar de la imagen de fluir con el texto. Para mantener ese comportamiento y eliminar el espacio. Recomiendo envolver la imagen con algo como esto.

<style>
    .imageHolder
    {
        display: inline-block;
    }
    img.noSpace
    {
        display: block;
    }
</style>
<div class="imageHolder"><img src="myimg.png" class="noSpace"/></div>
 0
Author: Mardok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-27 04:34:03