Vertikal zentrieren mit CSS
Es gibt unterschiedliche Ansätze Inhalte auf einer Webseite mit CSS vertikal zu zentrieren, so dass z. B. eine Grafik in der Mitte der Seite dargestellt wird, einige davon funktionieren sogar recht ordentlich mit verschiedenen Browsern.
Um es vorweg zu nehmen: CSS2 besitzt keine Eigenschaft um Elemente vertikal zu zentrieren. Eventuell wird es das in CSS3 einmal geben.
, wie Bert Bos vom W3C treffend anmerkt. Der von ihm vorgeschlagene Weg bedient sich denn auch der CSS Eigenschaft display: table-cell
in Kombination mit vertical-align: middle
. Im Grunde ist dies ein Nachbau der hergebrachten HTML-Lösung den Inhalt im Layout mittels einer Tabelle zu zentrieren (<td valign="middle">
). Da die vertical-align
Eigenschaft in CSS sich nur auf Tabellenzellen oder inline Elemente Anwenden lässt (s. CSS 2.1 Specification), bewirkt sie bei Blockelementen wie <div> ohne Verwendung von display: table-cell
nicht den gewünschten Effekt. Eine wenig elegante Lösung, denn eigentlich handelt es sich ja nicht um eine Tabelle.
Ein grundsätzliches Problem ist, dass die Höhe der auf dem Bildschirm sichtbaren Fläche mit der Auflösung und der Größe des Browserfensters variiert. Außerdem ist die Länge des Inhalts nicht notwendigerweise gleich der Höhe des Bildschirms, so dass möglicherweise vertikal gescrollt werden muss. Dem begegnet ein anderer verbreiteter Ansatz, bei dem ein Block Element (z. B. <div>), dessen Dimensionen bekannt bzw. festgelegt sind, anhand eines vorherigen Elements oder eines als Container fungierenden Elements positioniert wird. Dabei wird das Element anhand dessen ausgerichtet wird mittels Prozentangaben so positioniert, dass sein oberer Rand mit der Hälfte des angezeigten Bereichs abschließt. Das Element, dass die Inhalte enthält wird dann, um die Hälfte seiner Größe nach oben verschoben (was möglich ist, da seine Dimensionen bekannt sind). Außer der Tatsache, dass diese Methode mit weiterem Aufwand verbunden ist, wenn verschiedene Browser und Plattformen unterstützt werden müssen, ist sie auch nicht sehr elegant. Es wird ein Hilfselement eingeführt, dass nur für Layoutzwecke nötig ist. An eine Separierung von Content und Layout, was ja eines der Hauptanliegen beim Verzicht auf Layout mit HTML Elementen ist, ist nicht mehr zu denken.
Links
- Bert Bos: Web Style Sheets. CSS Tips & Tricks. Horizontale und vertikale Zentrierung
- Joe Gillespie: Vertical Centering with CSS
- Lauri Raittila: Vertical centering using CSS
- Dead Centre
- CSS vertical centering using float and clear
- Vertical Centering in CSS. Yuhu’s Definitive Solution with Unknown Height.
- How to: vertical centering with CSS
Schlagwörter: de, Layout, Webdesign
dave said,
Januar 22, 2008 at 17:53
Eine Bekannte schickte mir diesen Link http://www.frixon.de/tuts/vcenter.html mit einer Lösung, die auf das Hilfselement für die vertikale Positionierung verzichtet. Ich vermute allerdings, dass dies zu Lasten der Browserkompatibilität gehen dürfte.