2009-12-11 12 views
7

Consideremos el siguiente html/css:alineación vertical de los elementos en línea-bloque vacío

<style> 
span 
{ 
    display:inline-block; 
    width:5em; 
    height:5em; 
    padding:1em; 
} 
</style> 

a 
<span style="background-color:blue;">b</span> 
<span style="background-color:green;"></span> 
<span style="background-color:red;">c</span> 
d 

Las cajas azul y rojo, más el texto dentro y que rodea a las líneas de cajas horizontalmente. El cuadro verde vacío no; aparece encima de los otros dos cuadros. Si agrego algo de texto al recuadro verde, este comportamiento se detiene y todo se alinea como yo quiero.

Esto ocurre consistentemente en IE8 (modo estándar), FireFox 3.0 y Chrome, así que supongo que hay alguna propiedad de elementos de bloque en línea vacíos que no entiendo.

Puedo alinear las cajas especificando una propiedad de alineación vertical, pero luego los cuatro valores de texto ya no están alineados. ¿Alguna idea? Estoy perplejo en este caso.

Respuesta

0

Intente agregar &nbsp; dentro del intervalo de color verde.

+0

utilizar los estilos de código ... ponerlo en una nueva línea y guión 4 o más espacios – SimonDever

0
a 
<span style="background-color:blue;">b</span> 
<span style="background-color:green;">&nbsp;</span> 
<span style="background-color:red;">c</span> 
d 
8

Proporcione la alineación máxima del tramo y luego un margen negativo igual a su relleno, y no necesita el hack de espacio sin interrupciones.

span 
{ 
    display:inline-block; 
    width:5em; 
    height:5em; 
    padding:1em; 
    vertical-align:top; 
    margin-top: -1em; 
} 



a 
    <span style="background-color:blue;">b</span> 
    <span style="background-color:green;"></span> 
    <span style="background-color:red;">c</span> 
d 
+0

@ Chris ... usted me preguntaba por qué esto es - Resulta que la alineación vertical por defecto es "línea de base", por lo tiene sentido que sin el & nbsp * no haya una línea base para la alineación. – Luke

Cuestiones relacionadas