CSS Grid-Funktionen und Schlüsselwörter

display: grid mit IE: Schiffe versenken

Die CSS-Funktionen repeat() und minmax() ersparen Media Queries und verhindern Sprünge zwischen den Breakpoints.

18-12-15 SITEMAP CSS HTML JS Basis JS Web Tutorial SVG

CSS grid repeat

repeat wiederholt Angaben kurz und bündig, legt die Zahl der Zeilen oder Spalten fest, und kann sowohl mit Schlüsselwörtern also auch mit Funktionen gesteuert werden.

grid-template-columns: repeat(2, 60px 3fr) 120px;
                       |--------+--------|   |
                                |            |
                           Wiederhole 2x    5. Spalte
                           60px 3fr         feste Breite                  
les-fleur-01-400
les-fleur-02-400
les-fleur-03-400
les-fleur-04-400
les-fleur-05-400
les-fleur-06-400
les-fleur-07-400
les-fleur-08-400
les-fleur-09-400
les-fleur-10-400
les-fleur-11-400
/* Drei Zeilen, jeweils 120px hoch */
grid-template-rows: repeat(3, 120px);
/* 2 mal Spalten abwechselnd 60px und 4fr breit und die letzte Spalte 200px breit */
grid-template-columns: repeat(2, 60px 3fr) 120px;

Wird der Grid-Container vergrößert oder verkleinert, bleiben die Spalten mit der festen Spaltenbreite von 60px fixiert, die Spalten mit 3fr wachsen oder schrumpfen entsprechend.

grid minmax

Eine weitere CSS-Funktion von CSS Grid ist minmax. Die Werte in den runden Klammern der minmax-Funktion geben eine minimale und maximale Breite / Höhe an, zwischen denen die Spaltenbreite / Zeilenhöhe variieren kann. minmax erspart Media Queries und verhindert Sprünge zwischen den Breakpoints.

               +-- maximale Breite
               |
minmax(200px,300px)
         |
         +-- minimale Breite
/** Erste Spalte 200 bis 300px breit, 
    zweite Spalte 125px, 
    dritte und vierte Spalte zwischen 100 und 200px **/
grid-template-columns: minmax(200px,300px) 125px repeat(2, minmax(100px,200px));
/** Drei Zeilen von je 150px Höhe **/
grid-template-rows: repeat(3, 150px);

Grid auto-fit und auto-fill

Die Schlüsselwörter auto-fit und auto-fill der CSS-repeat-Funktion tragen ebenfalls dazu bei, Seiten mit weniger Media Queries responsive zu gestalten. Wenn repeat() mit auto-fit oder auto-fill eingesetzt wird, erzeugt der Grid-Container so viele Grid-Tracks (column / rows) wie in den Container passen, ob die Grid-Items existieren oder nicht.

Weil grid-template-rows: repeat(2, 200px) sozusagen sklavische eingehalten wird, haben wir also immer zwei Zeilen.

auto-fit packt die Spalten in das verfügbare Platzangebot, auto-fill fügt neue Spalten hinzu, selbst wenn sie leer bleiben.

grid-template-columns: repeat(2, minmax(200px, 1fr));
grid-template-rows: repeat(2, 200px);	

Mit größerem bzw. kleinerem Platzangebot wachsen bzw. schrumpfen die Spalten, aber die minimale Breite der Spalten ist 200px. Wird der verfügbare Platz noch kleiner, fallen die Spalten sozusagen aus dem Rahmen.

grid-template-rows: repeat(2, 200px);	
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));

Mit grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)) nutzt der Grid-Container ein wachsendes Platzangebot für weitere Spalten. Auf kleinen Viewports bekommen die Grid-Spalten eine minimale Breite von 200px ohne Scrollleisten, mit einem größeren Platzangebot werden weitere Spalten für die Grid-Items eingesetzt.

Schema auto-fit

auto-fit

auto-fit passt die Grid-Items an, so dass sie den verfügbaren Raum ausfüllen, oder anders ausgedrückt: auto-fill füllt den gesamten Grid-Container.

Schema auto-fill
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
grid-template-rows: repeat(3, 150px);