Sie können verwenden line-height: 50px;, Sie werden dort nicht brauchen vertical-align: middle;.
Demo
Das Obige schlägt fehl, wenn Sie mehrere Zeilen haben. In diesem Fall können Sie Ihren Text also mit spanund als verwenden display: table-cell;und display: table;zusammen mit vertical-align: middle;und auch vergessen, width: 100%;für zu verwenden#abc
Demo
#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;
}
Eine andere Lösung, die ich mir hier vorstellen kann, ist die Verwendung von transformEigenschaften, bei translateY()denen Yoffensichtlich für Y-Achse steht. Es ist ziemlich einfach ... Alles, was Sie tun müssen, ist die Position der Elemente auf absoluteund später 50%von der Position zu setzen und topvon ihrer Achse mit negativ zu übersetzen-50%
div {
height: 100px;
width: 100px;
background-color: tomato;
position: relative;
}
p {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Demo
Beachten Sie, dass dies in älteren Browsern, z. B. IE8, nicht unterstützt wird. Sie können jedoch IE9 und andere ältere Browserversionen von Chrome und Firefox mithilfe von -ms, -mozbzw. -webkitPräfixen erstellen.
Weitere Informationen dazu transformfinden Sie hier .