2012-03-11 16 views
5

que podría ser la primera persona en descubrir esto (documento o al menos en la web):¿Es esta la solución más sencilla y flexible para alinear verticalmente el texto dentro de un elemento de bloque?

HTML:

<div>Vertically Aligned Text<span></span></div> 

CSS:

div 
{ 
    height: 100px; /* or whatever % etc. */ 
} 

div > span 
{ 
    display: inline-block; 
    visibility: hidden; 
    height: 100%; 
    vertical-align: middle; 
} 

Funciona porque los aumentos de código la altura de la línea al 100% de su contenedor, pero no entiendo por qué la configuración vertical-align: middle; en el <span></span> afecta el texto.

No he encontrado esta solución documentada en la web, y es más simple y más flexible que otras que he encontrado. Además de que debería funcionar en todos los navegadores de Internet Explorer 6 en adelante (obviamente reemplazar el selector de hijo con otra cosa).

Para cumplir con el requisito de pregunta, ¿es esta la solución más simple y flexible a una pregunta antigua?

+0

Poner un enlace de archivo fiddlink. –

+0

Agradable pero solo funciona si el texto no está escrito en más de una línea http://jsfiddle.net/aQNWp/ – Dampsquid

+0

¿Qué es un enlace fiddlink? –

Respuesta

0

El uso del atributo de pantalla CSS table-cell me parece el método más fácil.

ver este jsFiddle

Y el CSS:

div 
{ 
    height:100px; /* or whatever % etc. */ 
    border: solid 1px black; 
    vertical-align : middle; 
    display : table-cell; 
} 
+0

No creo que esto funciona en IE6/7. –

+0

@ChrisCannon Correcto, [los métodos de visualización de tabla no son compatibles en ie6/7] (http://www.quirksmode.org/css/display.html) – steveax

+0

Ya no los soporto. Redirijo IE6/7 a una página diciendo por favor actualizar de todos modos. Si todavía los están utilizando, no pueden ver mis hermosos sitios modernos: P – jacktheripper

0

Este artículo describe todas las técnicas de alineación verticales (que yo sepa fuera :)), incluido, en el enfoque que tomó. http://phrogz.net/css/vertical-align/index.html

+0

No, el método 1 usa márgenes negativos y el método 2 usa la altura de línea basada en ems (lo cual está bien si hay una relación simple como 2: 1). –

Cuestiones relacionadas