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 span
y 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 transform
propiedad con translateY()
donde Y
obviamente significa Y Eje. Es bastante sencillo ... Todo lo que necesita hacer es establecer la posición de los elementos absolute
y luego la posición 50%
desde el top
eje 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, -moz
y -webkit
respectivamente.
Para obtener más información sobre transform
, puede consultar aquí .