Zentrieren mit Gridlayout

Natürlich ist das CSS3-Gridlayout-Modul für komplexe Layoutaufteilungen gedacht, aber manchmal braucht man ja auch banale Dinge – wie beispielsweise eine horizontale und vertikale Zentrierung. Und da das Gridlayout demnächst standardmäßig in Firefox (ab Version 52), Chrome (ab Version 57) und Safari (ab 10.1) unterstützt wird, scheint es mir der richtige Zeitpunkt, die verschiedenen Optionen auszuprobieren. Zur Wahl stehen für die Zentrierung die Angaben align-content, justify-content sowie align-items und justify-items. Was aber ist genau der Unterschied zwischen diesen Angaben? Und wie zentriert man jetzt am besten beim Einsatz vom CSS3-Gridlayout?

Wichtig: das CSS3-Gridlayout funktioniert ab Firefox 52 und Chrome 57 standardmäßig. Im Februar 2017 sind hingegen noch Vorgängerversionen aktuell, dort muss man es hingegen zuerst in den Einstellungen aktivieren, siehe https://igalia.github.io/css-grid-layout/enable.html.

Gehen wir von einem Element mit der Klasse .zentriert aus, das innerhalb von body steht:

<body>
<div class="zentriert">Zentriert :-)</div>
</body>

Zentrieren mit *-content

Mit Gridlayout gelingt die Zentrierung mithilfe ein paar Zeilen Code. Wir machen das body-Element zum Gridcontainer und spezifizieren die Ausrichtung mithilfe von align-content und justify-content:

body {
display: grid;
align-content: center;
justify-content: center;
}

Das wars – das Element ist damit zentriert.

Beispiel zum Ausprobieren: http://www.maurice-web.de/blogbeispiele/gridlayout/grid_zentrieren.html

Zentriert mit Gridlayout

Zentrieren mit *-items

Eine Zentrierung ist ebenfalls möglich durch folgende Angaben:

body {
display: grid;
align-items: center;
justify-items: center;
}

Der Unterschied zwischen beiden: Durch die *-content-Varianten zentriert man den Rasterbereich als Ganzes. Mit den *-items-Eigenschaften zentriert man hingegen Elemente innerhalb eines Rasterbereichs.  In unserem Spezialfall haben wir ein Raster mit genau einem Rasterelement und da macht es keinen Unterschied, welche Variante ich wähle.

Zentrieren mit align-items und justify-items: http://www.maurice-web.de/blogbeispiele/gridlayout/grid_zentrieren_b.html

Mehrere Elemente zentrieren

Ändern wir das Beispiel einmal ab: Wir wollen drei Elemente, die zentriert werden sollen.

<body>
<div class="zentriert">Zentriert :-)</div>
<div class="zentriert">Zentriert :-)</div>
<div class="zentriert">Zentriert :-)</div>
</body>

Jetzt klappt es mit den Angaben:

body {
display: grid;
align-content: center;
justify-content: center;
}

http://www.maurice-web.de/blogbeispiele/gridlayout/grid_zentrieren_2.html

Wenn man hingegen die Zentrierung mit *-items versucht, werden nur die Inhalte in den Rasterzellen zentriert.

http://www.maurice-web.de/blogbeispiele/gridlayout/grid_zentrieren_2b.html

(Die Rasterlinien, die im Screenshot zu sehen sind, kann man sich in der Developer Edition von Firefox anzeigen lassen).

Mehrere nebeneinander befindliche Elemente zentrieren

Bisher wurden mehrere Elemente untereinander dargestellt. Für dieses Phänomen ist die Eigenschaft grid-auto-flow zuständig, die standardmäßig den Wert row hat – deswegen werden unsere Elemente untereinander dargestellt. Wenn wir hingegen

grid-auto-flow: column;

beim Gridcontainer ergänzen, sind die Elemente nebeneinander.

http://www.maurice-web.de/blogbeispiele/gridlayout/grid_zentrieren_3.html

Wieder kann man gut sehen, welche andere Zentrierung durch justify-items und align-items erreicht wird. Hier werden nur die Inhalte innerhalb der Rasterzellen zentriert.

http://www.maurice-web.de/blogbeispiele/gridlayout/grid_zentrieren_3b.html

Mehr zu Gridlayout:

https://maurice-web.de/css-grids-raster-im-ie10-und-in-neuer-syntax-definieren/
https://maurice-web.de/responsive-layouten-mit-flexbox-und-mit-gridlayout-der-vergleich/

 

 

Kommentare sind geschlossen.