Skip to main content

Grid

Grid er en layout-primitiv for å stable innhold i to dimensjoner — vertikalt og horisontalt. Den fungerer både som custom element (<ix-grid>) og som CSS-klasse (.ix-grid).

Egnet til

  • Layout i to dimensjoner — vertikalt og horisontalt samtidig
  • Responsiv layout med automatisk tilpasning til tilgjengelig plass (auto-fit, auto-fill)
  • Jevnt fordelte kolonner med kontrollert mellomrom
  • Layout både på sidenivå og internt i komponenter eller seksjoner

Uegnet til

  • Layout i kun én dimensjon — bruk Stack i stedet
  • Kompleks layout der du trenger ulik kolonnestørrelse per rad

Kom i gang

ix-grid har 12 kolonner og md gap som standard. Bruk cols- og gap-attributtene (eller props) for å overstyre.

Result
Loading...
Kode
Live Editor
<Grid cols={3}>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">1</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">2</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">3</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">4</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">5</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">6</div>
</Grid>

Eksempler

Kolonner

Result
Loading...
Kode
Live Editor
<VStack gap="lg">
  <Grid cols={2} gap="sm">
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">1</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">2</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">3</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">4</div>
  </Grid>
  <Grid cols={4} gap="sm">
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">1</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">2</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">3</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">4</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">5</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">6</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">7</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">8</div>
  </Grid>
</VStack>

Auto-fit — responsiv layout

auto-fit tilpasser antall kolonner til tilgjengelig plass og strekker cellene for å fylle hele bredden.

Result
Loading...
Kode
Live Editor
<Grid cols="auto-fit-md" gap="sm">
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Auto 1</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Auto 2</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Auto 3</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Auto 4</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Auto 5</div>
</Grid>

Auto-fill — behold cellestørrelse

auto-fill tilpasser antall kolonner, men beholder cellestørrelsen i stedet for å strekke dem.

Result
Loading...
Kode
Live Editor
<Grid cols="auto-fill-sm" gap="sm">
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Fill 1</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Fill 2</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Fill 3</div>
</Grid>

Col-span — ulik bredde per celle

Bruk colspan-attributt eller Grid.Item for å la celler spenne over flere kolonner. Kombiner med 12-kolonners grid for fleksibel layout.

Result
Loading...
Kode
Live Editor
<Grid cols={12} gap="sm">
  <Grid.Item colspan={4} className="ix-color-surface-info-default ix-px-md ix-py-2xs">4 kolonner</Grid.Item>
  <Grid.Item colspan={8} className="ix-color-surface-info-default ix-px-md ix-py-2xs">8 kolonner</Grid.Item>
  <Grid.Item colspan={6} className="ix-color-surface-info-default ix-px-md ix-py-2xs">6 kolonner</Grid.Item>
  <Grid.Item colspan={6} className="ix-color-surface-info-default ix-px-md ix-py-2xs">6 kolonner</Grid.Item>
  <Grid.Item colspan="full" className="ix-color-surface-info-default ix-px-md ix-py-2xs">Full bredde</Grid.Item>
</Grid>

Gap

Standard gap er md. Bruk gap-prop/-attributt for å overstyre.

Result
Loading...
Kode
Live Editor
<VStack gap="lg">
  <Grid cols={3} gap="lg">
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">1</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">2</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">3</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">4</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">5</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">6</div>
  </Grid>
  <Grid cols={3} gap="none">
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">1</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">2</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">3</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">4</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">5</div>
    <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">6</div>
  </Grid>
</VStack>

Align — vertikal justering av innhold

Result
Loading...
Kode
Live Editor
<Grid cols={3} align="center" gap="sm" style={{ height: '120px' }}>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Kort</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-xl">Høy</div>
  <div className="ix-color-surface-info-default ix-px-md ix-py-2xs">Kort</div>
</Grid>

Universell utforming

Hva du selv må sørge for

  • Bruk semantiske elementer når konteksten krever detix-grid er et ukjent HTML-element uten semantisk rolle. Nettleseren behandler det som generisk blokkinnhold, på samme måte som <div>. Bruk as-prop i React (f.eks. <Grid as="section">) eller CSS-klasser direkte på et native element når innholdet krever semantikk.
  • Pass på DOM-rekkefølgen — CSS Grid kan endre visuell rekkefølge uten å endre DOM-rekkefølgen. Skjermlesere og tastaturnavigasjon følger DOM. Sørg for at DOM-rekkefølgen gir mening uavhengig av visuell presentasjon.

På native elementer (ikke <ix-grid>) virker ikke attributter — bruk modifier-klasser:

<!-- CSS-klasse på semantisk element — modifier-klasser styrer kolonner og gap -->
<section class="ix-grid ix-grid-cols-3 ix-gap-md">
<article>Artikkel 1</article>
<article>Artikkel 2</article>
<article>Artikkel 3</article>
</section>

<!-- Tilsvarende med <ix-grid> — her bruker du attributter i stedet for klasser -->
<ix-grid cols="3" gap="md">...</ix-grid>

WCAG-kriterier

Sist gjennomgått: 2026-06-17 — alle 56 WCAG 2.2-kriterier vurdert

WCAG-kriterier3 ditt ansvar · 0 håndtert · 53 ikke relevant · 0 ikke på plass
Ditt ansvar (3)
KriteriumNivåHva du må gjøre
1.3.1 Informasjon og relasjonerABruk semantiske elementer når konteksten krever det. ix-grid er et ukjent HTML-element uten semantisk rolle — tilsvarende <div>. Nettleseren injiserer ingen ARIA. Bruk et semantisk native element med ix-grid-*-klasser (eller as-prop i React) når innholdet krever det — f.eks. <section class="ix-grid"> for innholdsseksjoner, <ul class="ix-grid"> for lister.
1.3.2 Meningsfull rekkefølgeAPass på DOM-rekkefølgen ved komplekse grid-oppsett. CSS Grid kan endre visuell rekkefølge uten å endre DOM-rekkefølgen. Skjermlesere og tastaturnavigasjon følger DOM. Sørg for at DOM-rekkefølgen gir mening uavhengig av visuell presentasjon.
2.4.3 FokusrekkefølgeAPass på DOM-rekkefølgen ved komplekse grid-oppsett. CSS Grid kan endre visuell rekkefølge uten å endre DOM-rekkefølgen. Skjermlesere og tastaturnavigasjon følger DOM. Sørg for at DOM-rekkefølgen gir mening uavhengig av visuell presentasjon.
Ikke relevant (53)
KriteriumNivåHvorfor ikke relevant
1.1.1 Ikke-tekstlig innholdAIngen bilder eller ikke-tekstlig innhold i selve layout-elementet.
1.2.1 Bare lyd og bare video (forhåndsinnspilt)AIngen medieelementer.
1.2.2 Teksting (forhåndsinnspilt)AIngen medieelementer.
1.2.3 Synstolking eller mediealternativ (forhåndsinnspilt)AIngen medieelementer.
1.2.4 Teksting (direkte)AAIngen medieelementer.
1.2.5 Synstolking (forhåndsinnspilt)AAIngen medieelementer.
1.3.3 Sensoriske egenskaperAIngen sensoriske karakteristikker brukes for å formidle informasjon.
1.3.4 VisningsretningAAIngen orientasjonslåsing.
1.3.5 Identifiser formål med inndataAAIngen skjemafelt.
1.4.1 Bruk av fargeAFarge brukes ikke for å formidle informasjon.
1.4.2 Styring av lydAIngen lyd.
1.4.3 Kontrast (minimum)AAIngen tekst i selve layout-elementet.
1.4.4 Endre tekststørrelseAAIngen tekst i komponenten. Layout bruker relative enheter og skalerer korrekt.
1.4.5 Bilder av tekstAAIngen bilder av tekst.
1.4.10 OmflytAAGrid-layout med auto-fit/auto-fill flyter naturlig ved smal viewport.
1.4.11 Kontrast for ikke-tekstlig innholdAAIngen UI-komponenter med krav til ikke-tekstlig kontrast.
1.4.12 TekstavstandAAIngen tekst i selve elementet.
1.4.13 Innhold ved hover eller fokusAAIngen hover/fokus-innhold.
2.1.1 TastaturARent layout-element — ikke fokuserbart.
2.1.2 Ingen tastaturfelleAIngen fokus-felle.
2.1.4 TastatursnarveierAIngen hurtigtaster.
2.2.1 Justerbar hastighetAIngen tidsfrister.
2.2.2 Pause, stopp, skjulAIngen bevegelig eller autooppdatert innhold.
2.3.1 Terskelverdi på tre glimtAIngen blinking eller flimring.
2.4.1 Hoppe over blokkerAIngen blokker som må hoppes over.
2.4.2 SidetitlerAIkke en side-komponent.
2.4.4 Formål med lenke (i kontekst)AIngen lenker i komponenten.
2.4.5 Flere måterAAIkke en navigasjonsstruktur.
2.4.6 Overskrifter og ledeteksterAAIngen overskrifter eller labeler i komponenten.
2.4.7 Synlig fokusAAIkke fokuserbar.
2.4.11 Fokus ikke skjult (minimum)AAIkke fokuserbar.
2.5.1 PekerbevegelserAIngen peker-gester.
2.5.2 Avbryt pekerAIngen peker-kanselleringslogikk.
2.5.3 Label i navnAIngen synlig label.
2.5.4 BevegelsesaktiveringAIngen bevegelsesbasert aktivering.
2.5.6 Samtidige inndatamekanismerAIngen begrensning på input-modalitet.
2.5.7 DrabevegelserAIngen draing-funksjonalitet.
2.5.8 Målstørrelse (minimum)AAIkke et interaktivt mål.
3.1.1 Språk på sidenAIkke en side-komponent.
3.1.2 Språk på deler av innholdAAIngen språkendringer.
3.2.1 Ved fokusAIkke fokuserbar.
3.2.2 Ved inndataAIngen input.
3.2.3 Konsistent navigasjonAAIngen navigasjon.
3.2.4 Konsistent identifikasjonAAIngen gjentagende komponenter med inkonsistent identifisering.
3.2.6 Konsistent hjelpAIngen hjelp-funksjonalitet.
3.3.1 Identifikasjon av feilAIngen skjemavalidering.
3.3.2 Ledetekster eller instruksjonerAIngen skjemafelt.
3.3.3 Forslag ved feilAAIngen feilforslag.
3.3.4 Forhindring av feil (juridisk, økonomisk, data)AAIngen juridisk forpliktende handlinger.
3.3.7 Redundant oppføringAIngen redundant input.
3.3.8 Tilgjengelig autentisering (minimum)AAIngen tilgjengelighetsautentisering.
4.1.2 Navn, rolle, verdiAIkke et interaktivt element — ingen rolle, navn eller tilstand å eksponere.
4.1.3 StatusmeldingerAAIngen statusmeldinger.

Props / API

Grid

PropTypeStandardBeskrivelse
asElementTypeRendrer et native element med CSS-klasser i stedet for <ix-grid> med attributter. Bruk for semantikk — f.eks. as="section".
cols1 | 2 | 3 | 4 | 6 | 12 | 'auto-fit-xs' | 'auto-fit-sm' | 'auto-fit-md' | 'auto-fit-lg' | 'auto-fill-xs' | 'auto-fill-sm' | 'auto-fill-md' | 'auto-fill-lg'Antall kolonner eller responsivt mønster
rows1 | 2 | 3 | 4Antall rader
gapGapSize'md'Avstand mellom celler
align'start' | 'end' | 'center' | 'stretch'Vertikal justering av innhold i celler
justify'start' | 'end' | 'center' | 'stretch'Horisontal justering av innhold i celler
inlinebooleanGjør grid til inline-grid
classNamestringEkstra CSS-klasser
refRef<HTMLElement>Ref til rotelementet

Støtter alle standard HTML-attributter for det rendrede elementet (id, style, data-* osv.).

Grid.Item

Wrapper for grid-barn som trenger colspan eller rowspan.

PropTypeStandardBeskrivelse
asElementType'div'Rendrer som annet element
colspan1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'full'Antall kolonner cellen spenner over
rowspan1 | 2 | 3 | 4 | 'full'Antall rader cellen spenner over
classNamestringEkstra CSS-klasser

Tilpasning med CSS

Grid-komponentene har ingen egne CSS custom properties. Bruk utility-klasser for ytterligere tilpasning:

<ix-grid cols="3" gap="md" class="ix-justify-items-center">
<div>Sentrert</div>
<div>Sentrert</div>
<div>Sentrert</div>
</ix-grid>

Relatert