Puedes usar line-height: 50px;, no necesitarás vertical-align: middle;allí.
Manifestación
Lo anterior fallará si tiene varias líneas, por lo que en ese caso puede ajustar su texto usando spany luego usar display: table-cell;y, display: table;junto con vertical-align: middle;, no olvide usar width: 100%;para#abc
Manifestación
#abc{
font:Verdana, Geneva, sans-serif;
font-size:18px;
text-align:left;
background-color:#0F0;
height:50px;
display: table;
width: 100%;
}
#abc span {
vertical-align:middle;
display: table-cell;
}
Otra solución en la que puedo pensar aquí es usar la transformpropiedad con translateY()donde Yobviamente significa Y Eje. Es bastante sencillo ... Todo lo que necesita hacer es establecer la posición de los elementos absolutey luego la posición 50%desde el topeje y traducirlo desde su eje con negativo-50%
div {
height: 100px;
width: 100px;
background-color: tomato;
position: relative;
}
p {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Manifestación
Tenga en cuenta que esto no será compatible con los navegadores más antiguos, por ejemplo, IE8, pero puede hacer IE9 y otras versiones más antiguas de Chrome y Firefox usando los prefijos -ms, -mozy -webkitrespectivamente.
Para obtener más información sobre transform, puede consultar aquí .
Es simple: dale al padre esto:
y déle al niño div (s) esto:
¡Eso es!
fuente
display:table;al padre para que funcione.Antigua pregunta, pero hoy en día CSS3 hace que la alineación vertical sea realmente simple .
Simplemente agregue al
#abcsiguiente CSS:Demo simple
Pregunta de demostración original actualizada
Ejemplo simple:
fuente
CSS3?Encontré esta solución por Sebastian Ekström. Es rápido, sucio y funciona muy bien. Incluso si no conoce la altura de los padres:
Lee el artículo completo aquí .
fuente
transform-style: preserve-3d;:!Puede usar la altura de línea tan grande como la altura del div. Pero para mí la mejor solución es esta ->
position:relative; top:50%; transform:translate(0,50%);fuente
¿Qué hay de agregar
line-height?Violín, altura de línea
O
paddingen#abc. Este es el resultado con rellenoActualizar
Agregue en su css:
El resultado . Espero que esto sea lo que buscas.
fuente
Prueba esto:
Otro método para centrar un div:
fuente
fuente
Use la propiedad CSS translateY para centrar verticalmente su texto en su contenedor
Y luego aplíquelo a su DIV que contiene
Ajuste el porcentaje de traducción para satisfacer sus necesidades. Espero que esto ayude
fuente
Este código es para alineación vertical central y horizontal central sin especificar altura fija:
fuente