CSS Grid-generator

Nästa

CSS Grid är standardsättet att bygga 2D-layouts, men behållarsyntaxen är lätt att glömma. Den här generatorn skriver behållarreglerna åt dig: ett fast antal kolumner med lika bredd, mellanrummet mellan spåren och en media query som växlar till auto-fit-kolumner under en minimibredd, så att layouten förblir läsbar på små skärmar. Resultatet är ren behållar-CSS; placeringen av element gör du själv i din egen stilmall.

Så bygger du ett rutnät

  1. 1

    Ställ in antalet kolumner

    Mellan 1 och 12 spår med lika bredd.

  2. 2

    Ställ in kolumnernas minimibredd

    Under denna bredd växlar rutnätet till auto-fit så att varje kolumn behåller en användbar minimistorlek.

  3. 3

    Ställ in mellanrummet

    Utrymmet mellan kolumner och rader.

  4. 4

    Generera CSS:en

    Verktyget skriver behållarreglerna plus den responsiva fallbacken.

  5. 5

    Kopiera koden

    Klistra in behållarreglerna i din stilmall och placera element med egna `grid-column`- / `grid-row`-regler.

Den genererade behållaren

display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 16px;

@media (max-width: 660px) {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
  • repeat(3, minmax(0, 1fr)): tre kolumner som delar den tillgängliga bredden lika. 1fr är en bråkdel av det återstående utrymmet; minmax(0, 1fr) låter kolumner krympa under sin innehållsstorlek.
  • gap: mellanrummet mellan varje spår.
  • Media queryn växlar till repeat(auto-fit, minmax(220px, 1fr)), som skapar så många kolumner som får plats, var och en minst 220px bred. Brytpunkten är antalet kolumner gånger minimibredden (med ett golv på 120px), så på små skärmar bryts rutnätet till fler rader i stället för att klämmas ihop.

Enheten fr

fr betyder “en bråkdel av det återstående utrymmet”: efter att spåren med fast storlek dragits av delas det återstående utrymmet med det totala antalet fr-enheter.

grid-template-columns: 200px 1fr 2fr;

På en behållare på 1000px tar första kolumnen 200px och de återstående 800px delas 1:2, det vill säga 267px och 533px.

auto-fill vs. auto-fit

  • auto-fill: skapar tomma fyllnadsspår när det inte finns tillräckligt med element.
  • auto-fit: fäller ihop tomma spår till noll, så att återstående element sträcker sig för att fylla raden.

Den responsiva fallbacken använder auto-fit, vilket är vad kortrutnät vill ha: raden ser alltid full ut.

Kolumner med olika bredd

Generatorn skapar lika kolumner. Ändra resultatet för att blanda storlekar: grid-template-columns: 200px 1fr 2fr; ger en fast sidokolumn och två flexibla kolumner i förhållandet 1:2. För namngivna områden (grid-template-areas) eller explicit placering (grid-column: 1 / 3) lägger du till dessa regler för hand ovanpå den genererade behållaren.

Grid vs. Flexbox

  • Grid: explicit 2D-layout med spår. Bra när layouten har en rad- och kolumnstruktur (sidskelett, galleri, instrumentpanel).
  • Flexbox: 1D-justering längs en enda axel. Bra när element flyter naturligt (navigeringsfält, rad med knappar).

Riktiga layouter kombinerar oftast båda: Grid för sidskelettet, Flexbox inuti komponenter.

Vanliga fallgropar

  • Glömma min-width: 0 på barn: gridelement använder som standard sin innehålls minimibredd, vilket hindrar fr-kolumner från att krympa under det längsta ordet. Sätt min-width: 0 på barnen så att de kan krympa.
  • Häckning utan display: grid: ett gridbarn är inte självt ett rutnät förrän du deklarerar det.

Vanliga frågor

Den skyddar layouten på små skärmar. Den genererade media queryn växlar till repeat(auto-fit, minmax(bredd, 1fr)), så varje kolumn behåller minst den bredden och rutnätet lägger till fler rader i stället för att klämma kolumnerna.

Generatorn skapar lika kolumner. Ändra raden grid-template-columns i resultatet för att blanda storlekar, till exempel 1fr 2fr 1fr för en bred mittenkolumn eller 200px 1fr för en fast sidokolumn.

Oftast för att elementet har standardvärdet min-width: auto, som motsvarar dess innehålls minimibredd. Sätt min-width: 0 på gridelementet så att det kan krympa in i sin cell.

Grid när layouten har både rad- och kolumnstruktur (en sidlayout, ett fotogalleri, en instrumentpanel). Flexbox när element flyter längs en enda axel (ett navigeringsfält, en rad knappar, en stapel formulärfält).

Relaterade verktyg