Hjem » Siste artikler » CSS Grid for nybegynnere: slik bygger du fleksible layouts uten kaos

CSS Grid for nybegynnere: slik bygger du fleksible layouts uten kaos

Hovedillustrasjon
Hovedillustrasjon. Foto: Pixabay / Pexels.

Mange som jobber med web starter med å plassere alt med marginer, flyt eller tilfeldige flexbokser. Det fungerer helt til siden skal utvides, designet endres eller innholdet vokser.

CSS Grid gir deg et tydelig rutenett å jobbe i. Du kan planlegge layouten, plassere elementer på en forutsigbar måte og slippe mange av de kreative nødløsningene som gjør vedlikehold vanskelig.

Hva er CSS Grid, og når bør du bruke det?

CSS Grid er et layoutsystem i CSS som lar deg definere rader og kolonner, og så plassere elementer inn i dette rutenettet. I motsetning til flexbox, som hovedsakelig jobber i én dimensjon, håndterer Grid både rader og kolonner samtidig.

Et godt utgangspunkt er å bruke flexbox til å ordne innhold langs én akse (for eksempel horisontal meny) og Grid til større sideoppsett, seksjoner og komplekse moduler som har både rader og kolonner.

Første steg: gjør en container om til et grid

For å komme i gang trenger du en container, for eksempel en seksjon eller en wrapper rundt kort, artikler eller produkter. Så slår du på Grid med én linje CSS.

Et veldig enkelt eksempel kan se slik ut:

HTML

<div class=”kortliste”>
<article>Kort 1</article>
<article>Kort 2</article>
<article>Kort 3</article>
<article>Kort 4</article>
</div>

CSS

.kortliste {
display: grid;
gap: 1.5rem;
}

Nå er innholdet teknisk sett i et rutenett, men alt legger seg fortsatt i én kolonne. Neste steg er å definere kolonnene.

Definer kolonner på en lesbar måte

Grid er kraftig, men det er lett å skrive kryptisk kode hvis du ikke er bevisst. En lesbar og fleksibel måte å lage kolonner på, er å bruke repeat, minmax og autofill eller autofit.

Et responsivt oppsett med dynamiske kolonner kan se slik ut:

.kortliste {
display: grid;
gap: 1.5rem;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

Her skjer tre ting:

  • minmax(240px, 1fr)sier at hver kolonne skal være minst 240 piksler bred, men kan vokse opp til å fylle tilgjengelig plass.
  • auto-fitgjør at nettleseren legger inn så mange kolonner som får plass, og fjerner tomme spor.
  • 1frbetyr at kolonnene deler plass jevnt mellom seg.

Vanlige feil når man starter med grid

Det er noen mønstre som ofte gjør Grid unødvendig vanskelig. Heldigvis er de enkle å unngå når du vet om dem.

En typisk feil er å definere faste kolonnebredder for tidlig, for eksempel grid-template-columns: 300px 300px 300px. Dette låser designet til bestemte bredder og gir fort horisontal scroll på små skjermer.

En annen klassiker er å plassere hvert barn manuelt med grid-column og grid-row, selv om innholdet egentlig bare skal flyte naturlig i rutenettet. Bruk automatisk flyt der du kan, og reserver manuell plassering til spesielle tilfeller.

Plassering av elementer uten å miste oversikten

Tematisk illustrasjon
Tematisk illustrasjon. Foto: Hal Gatewood / Unsplash.

Noen ganger trenger du å la ett element spenne over flere kolonner, for eksempel en fremhevet artikkel øverst i en grid-liste. Da kan du bruke grid-column og grid-row på det ene elementet.

Eksempel:

.kortliste > article:first-child {
grid-column: 1 / -1;
}

1 / -1 betyr at elementet starter i første kolonne og strekker seg til siste. Dette er lesbart og robust, fordi du ikke er avhengig av nøyaktig antall kolonner.

Hvis du trenger mer kontroll, kan du gi områder navn med grid-template-areas, men det er ofte lurt å starte enkelt og bare bruke kolonne- og radspenn.

Responsivt design med få linjer CSS

En av de store fordelene med Grid er at du kan endre hele layouten med en medieforespørsel, uten å skrive om HTML. Det gjør koden mer robust over tid.

Et enkelt eksempel på layoutskifte:

.side {
display: grid;
gap: 1.5rem;
grid-template-columns: 1fr;
}

@media (min-width: 900px) {
.side {
grid-template-columns: 2fr 1fr;
}
}

Her har du én kolonne på små skjermer, og en todelt layout med hovedinnhold og sidestolpe på større skjermer. HTML kan være den samme for alle skjermstørrelser.

Tilgjengelighet og struktur sammen med CSS Grid

Det er viktig å huske at Grid bare påvirker visuell plassering, ikke rekkefølgen i DOM. Skjermlesere og tastaturnavigasjon følger fortsatt HTML-strukturen.

Derfor bør du aldri stole på Grid for å “fikse” en dårlig logisk rekkefølge i HTML. Start med en semantisk og forståelig struktur, og bruk Grid til å fordele innholdet visuelt uten å ødelegge leserekkefølgen.

Praktiske tips for mer vedlikeholdbar grid-kode

For at kodebasen skal være lett å jobbe med for både deg og andre, lønner det seg å ha noen enkle kjøreregler for Grid.

  • Bruk fr-enheter og minmax fremfor faste piksler der det er mulig.
  • Gi grid-containere meningsfulle navn basert på innhold, ikke visuelt utseende.
  • Samle de viktigste grid-egenskapene i toppen av komponenten, slik at layouten er lett å finne igjen.
  • Kommenter uvanlige plasseringer, spesielt hvis elementer spenner over mange rader eller kolonner.

Hvordan komme videre med CSS Grid

Når du er komfortabel med grid-template-columns, gap og enkel plassering, er neste steg å utforske mer avanserte mønstre gradvis, og teste dem i små moduler før du bygger hele sider med dem.

Det kan være nyttig å lage en liten “layout-lekeplass” i prosjektet, der du kun eksperimenterer med ulike grid-oppsett. På den måten kan du prøve ut ideer uten å risikere å bryte noe i produksjon.

Hvis du jobber i team, kan det også være lurt å dokumentere noen få standard grid-mønstre dere gjenbruker, for eksempel kort-rutenett, todelt layout og tredelt seksjon. Det gjør det enklere å holde design og kode konsistent over tid.

0 kommentarer