Wenn es sich um eine Text- und / oder Bildzeile handelt, ist dies einfach. Benutz einfach:
text-align: center;
vertical-align: middle;
line-height: 90px; /* The same as your div height */
Das ist es. Wenn es mehrere Zeilen sein können, ist es etwas komplizierter. Es gibt jedoch Lösungen auf http://pmob.co.uk/ . Suchen Sie nach "vertikal ausrichten".
Da es sich in der Regel um Hacks oder das Hinzufügen komplizierter Divs handelt, verwende ich normalerweise eine Tabelle mit einer einzelnen Zelle, um dies so einfach wie möglich zu gestalten.
Update für 2020:
Sofern Sie es nicht in früheren Browsern wie Internet Explorer 10 verwenden müssen, können Sie Flexbox verwenden. Es wird von allen gängigen Browsern weitgehend unterstützt . Grundsätzlich muss der Container als flexibler Container angegeben werden, zusammen mit der Zentrierung entlang seiner Haupt- und Querachse:
#container {
display: flex;
justify-content: center;
align-items: center;
}
So geben Sie eine feste Breite für das untergeordnete Element an, die als "flexibles Element" bezeichnet wird:
#content {
flex: 0 0 120px;
}
Beispiel: http://jsfiddle.net/2woqsef1/1/
Um den Inhalt in Schrumpffolie zu verpacken, ist es noch einfacher: Entfernen Sie einfach die flex: ...
Linie aus dem Flex-Element, und es wird automatisch in Schrumpffolie verpackt.
Beispiel: http://jsfiddle.net/2woqsef1/2/
Die obigen Beispiele wurden in gängigen Browsern wie MS Edge und Internet Explorer 11 getestet.
Ein technischer Hinweis, wenn Sie ihn anpassen müssen: Da dieser Flex-Artikel innerhalb des Flex-Elements selbst kein Flex-Container ist, funktioniert die alte CSS-Methode ohne Flexbox wie erwartet. Wenn Sie dem aktuellen Flex-Container jedoch ein zusätzliches Flex-Element hinzufügen, werden die beiden Flex-Elemente horizontal platziert. Um sie vertikal zu platzieren, fügen Sie die flex-direction: column;
zum Flex-Container hinzu. So funktioniert es zwischen einem Flex-Container und seinen unmittelbaren untergeordneten Elementen.
Es gibt eine alternative Methode zum Zentrieren: Geben Sie nicht center
die Verteilung auf der Haupt- und Querachse für den Flex-Container an, sondern geben Sie margin: auto
auf dem Flex-Element den gesamten zusätzlichen Platz in alle vier Richtungen und die gleichmäßig verteilten Ränder an macht das Flex-Element in alle Richtungen zentriert. Dies funktioniert nur, wenn mehrere Flex-Elemente vorhanden sind. Diese Technik funktioniert auch unter MS Edge, jedoch nicht unter Internet Explorer 11.
Update für 2016/2017:
Es kann häufiger verwendet werden transform
und funktioniert auch in älteren Browsern wie Internet Explorer 10 und Internet Explorer 11. Es kann mehrere Textzeilen unterstützen:
position: relative;
top: 50%;
transform: translateY(-50%);
Beispiel: https://jsfiddle.net/wb8u02kL/1/
So schrumpfen Sie die Breite ein:
Die obige Lösung verwendete eine feste Breite für den Inhaltsbereich. Verwenden Sie, um eine eingeschweißte Breite zu verwenden
position: relative;
float: left;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
Beispiel: https://jsfiddle.net/wb8u02kL/2/
Wenn die Unterstützung für Internet Explorer 10 benötigt wird, funktioniert die Flexbox nicht und die oben beschriebene Methode und die line-height
Methode funktionieren. Andernfalls würde die Flexbox den Job erledigen.
text-align:center
macht nicht den "vertikalen Teil"?