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 span
und 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 transform
Eigenschaften, bei translateY()
denen Y
offensichtlich für Y-Achse steht. Es ist ziemlich einfach ... Alles, was Sie tun müssen, ist die Position der Elemente auf absolute
und später 50%
von der Position zu setzen und top
von 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, -moz
bzw. -webkit
Präfixen erstellen.
Weitere Informationen dazu transform
finden Sie hier .