2010-10-29 11 views
15

elemento inline-block sin texto hace diferente

<div style="background-color:red"> 
 
    <div style="display:inline-block;background-color:green;height:20px;width:20px;"></div> 
 
</div> 
 
<div style="background-color:yellow"> 
 
    <div style="display:inline-block;background-color:green;height:20px;width:20px;">hi</div> 
 
</div>

Cuando generado en FF o Chrome la altura de la div rojo es 26px, mientras que la altura de la div amarillo es 20 píxeles. ¿Cómo puedo hacer que el div rojo represente lo mismo que el div amarillo, pero sin que contenga ningún texto?

Respuesta

34

sólo un pensamiento:

, siempre y cuando no hay texto en el div, es tratado como un inline-imagen (o algo más), y para que quede vertical-align se establece en 'línea de base' (o fondo de texto o lo que sea) en lugar de 'abajo'.

la solución:

para corregir eso, establece vertical-align: bottom; en su divs interiores. no hay absolutamente ninguna necesidad de poner un espacio o elemento invisible en ella, al igual que otros mencionados (pero eso sería una solución (feo), también)

+0

Aha! Eso resuelve el problema muy bien. ¡Gracias! –

+0

¡Es un placer! si esta es la respuesta que está buscando, sería bueno aceptarla haciendo clic en la marca de la izquierda (siempre debe aceptar una respuesta, respondió su pregunta) – oezi

+3

Yeeha !! Odio CSS por problemas como este, pero me encanta SO para gente como tú – NaturalBornCamper

1

¿Qué le parece poner un espacio de ancho cero (&#8203;) en el nodo "vacío"?

0

Es cojo, pero podría agregar &nbsp; al div vacío.

inline-block es un tipo de pantalla divertido y sin contenido porque otras propiedades como font-size y line-height pueden realmente hacer crecer el elemento más alto que 20px.

0

Si usted quiere tener una altura específica, utilice

min-height: 1em; 

Usar un espacio de algún tipo es una altura diferente en algunas circunstancias.

Cuestiones relacionadas