Spring til indhold

CSS Grid — antal kolonner (auto-fill/minmax)

Hvor mange kolonner får jeg automatisk, og hvor brede bliver de så reelt?

Svar: Den udbredte responsive grid-teknik 'grid-template-columns: repeat(auto-fill, minmax(X, 1fr))' fylder rækken med så mange kolonner, som kan være der, uden at noget element bliver smallere end den angivne minimumsbredde. Beregneren viser, hvor mange kolonner det reelt bliver til ved en given container-bredde, minimumsbredde og mellemrum (gap), samt elementernes faktiske bredde, når pladsen fordeles ligeligt.

Formel

antal kolonner = ⌊(container-bredde + gap) ÷ (min-elementbredde + gap)⌋

elementbredde = (container-bredde − (antal kolonner − 1) × gap) ÷ antal kolonner

Symboler og enheder i formlen
SymbolBetydningEnhed
container_bredde_pxContainerens breddepx
min_element_bredde_pxMinimumsbredde pr. elementpx
mellemrum_pxMellemrum mellem elementer (gap)px
=Antal kolonnerkolonner
=Elementernes faktiske breddepx

Gyldighed og kilde

Kilde
Geometri / CSS Grid Layout-teknik (auto-fill + minmax, W3C-specifikation)

Gælder ikke når

  • Modellen forudsætter, at grid'et bruger 'repeat(auto-fill, minmax(min, 1fr))' — andre grid-strategier (fx faste kolonneantal eller auto-fit) opfører sig lidt anderledes ved tomme kolonner.

Regneeksempel

Beregnerens egne standardværdier sat ind. Tallene er regnet med præcis den formel værktøjet bruger.

Sat ind

  • Containerens bredde1.200 px
  • Minimumsbredde pr. element280 px
  • Mellemrum mellem elementer (gap)24 px

Giver

  • Antal kolonner4 kolonner
  • Elementernes faktiske bredde282 px

Selve beregneren er låst

Opret en gratis bruger for at låse op for alle artikler, beregnere, skabeloner og sortiment — og få adgang til quizzer og klasser. Det tager under et minut: navn, email og en adgangskode. Intet betalingskort.

Vil du prøve noget først? Se hvad du kan bruge uden konto — junior-zonen, leksikonet, videoerne og mere.

Sådan bruger du den

Med grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) laver browseren selv kolonnerne. Beregneren viser, hvor mange kolonner der bliver og hvor brede kortene ender, så du kan vælge minimumsbredde og gap, der passer til designet ved de vigtige skærmbredder.

Trin for trin

  1. Find containerens indvendige bredde ved den skærmbredde, du tester (uden padding).
  2. Læg gap til både containerens bredde og minimumsbredden.
  3. Del og rund ned. Det er antal kolonner.
  4. Træk gap'ene fra containerbredden, og del med antal kolonner. Det er kortenes faktiske bredde.

Typiske fejl

  • At glemme gap'et. 4 × 280 = 1120 passer i 1200, men med 3 gap på 24 px bliver det 1192, og der er kun plads lige akkurat.
  • At regne med containerens ydre bredde inkl. padding.
  • At forveksle auto-fill og auto-fit. Med få kort strækker auto-fit dem ud over hele rækken, mens auto-fill beholder tomme kolonner.

Eksempler fra hverdagen

Produktkort på desktop

En webshop har en container på 1200 px, kortene skal være mindst 280 px, og gap er 24 px.

Containerens bredde
1.200 px
Minimumsbredde pr. element
280 px
Mellemrum mellem elementer (gap)
24 px

Det betyder: Det bliver til 4 kolonner, hver 282 px brede. Vil kunden have fem på en række, skal minimumsbredden ned under ca. 221 px.

Samme grid på en telefon

På en iPhone er containeren 343 px (390 px minus 2 × 16 px padding), og gap er 16 px.

Containerens bredde
343 px
Minimumsbredde pr. element
280 px
Mellemrum mellem elementer (gap)
16 px

Det betyder: Kortet fylder 343 px, altså hele bredden, for der er kun plads til én kolonne. Det er det ønskede på mobil, uden en eneste media query.

Bredt galleri

Et fotogalleri står i en container på 1440 px med minimum 220 px og gap 20 px.

Containerens bredde
1.440 px
Minimumsbredde pr. element
220 px
Mellemrum mellem elementer (gap)
20 px

Det betyder: Galleriet får 6 kolonner, hver 223 px brede. Det er tæt på minimum, så billederne bliver ikke beskåret meget.

Tommelfingerregel

Antal kolonner ≈ containerbredde ÷ (minimum + gap), rundet ned.

Sådan tjekker du svaret

Antal kolonner × kortbredde + (antal − 1) × gap skal give containerens bredde.