Skip to main content

Checkbox

Checkbox lar brukeren velge én eller flere alternativer fra en liste. Hvert valg er uavhengig av de andre, og flere kan være valgt samtidig.

Egnet til

  • Når brukeren skal kunne velge flere alternativer samtidig
  • Samtykker (f.eks. vilkår eller abonnement)
  • Filtrering der flere valg kan kombineres
  • Situasjoner der hvert valg er uavhengig av de andre

Uegnet til

  • Når brukeren kun skal velge ett alternativ (bruk RadioButton)
  • Lange eller komplekse lister med mange valg
  • Situasjoner der valg påvirker hverandre eller er gjensidig utelukkende
  • Når det er behov for sterk veiledning eller forklaring per valg

Kom i gang

Result
Loading...
Kode
Live Editor
<Checkbox label="Jeg godtar vilkårene" name="terms" />

Eksempler

Med hjelpetekst

Result
Loading...
Kode
Live Editor
<Checkbox
  label="Send meg nyhetsbrev"
  description="Du kan når som helst melde deg av"
  name="newsletter"
/>

Med feilmelding

Result
Loading...
Kode
Live Editor
<Checkbox
  label="Jeg godtar vilkårene"
  errorMessage="Du må godta vilkårene for å fortsette"
  name="terms"
/>

Indeterminate (delvis valgt)

Indeterminate-tilstanden brukes for "velg alle"-checkboxer når noen, men ikke alle, underliggende valg er krysset av.

Result
Loading...
Kode
Live Editor
<Checkbox label="Velg alle" indeterminate name="select-all" />

Deaktivert

Result
Loading...
Kode
Live Editor
<>
  <Checkbox label="Ikke tilgjengelig" disabled />
  <Checkbox label="Allerede godtatt" disabled defaultChecked />
</>

Gruppe med flere checkboxer

Result
Loading...
Kode
Live Editor
<fieldset style={{ border: 'none', padding: 0, margin: 0 }}>
  <legend style={{ fontWeight: 'var(--ix-font-weight-medium)', marginBottom: '8px' }}>
    Hvordan vil du bli kontaktet?
  </legend>
  <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
    <Checkbox label="E-post" name="contact" value="email" />
    <Checkbox label="SMS" name="contact" value="sms" />
    <Checkbox label="Telefon" name="contact" value="phone" />
  </div>
</fieldset>

Retningslinjer

Tydelige labels gir forutsigbarhet

Alle checkboxer skal ha en synlig og beskrivende label. Labelen skal beskrive hva som blir valgt, ikke hva brukeren skal gjøre.

For eksempel bør man skrive "Motta nyhetsbrev" i stedet for "Meld meg på nyhetsbrev". Når labelen beskriver selve valget, blir det enklere å forstå hva som skjer når checkboxen hukes av.

Dette gjør det lettere å skanne listen og reduserer risikoen for misforståelser.

Checkbox bør som hovedregel brukes i gruppe

Checkboxer bør som hovedregel presenteres som en del av en gruppe med flere valg. Dette gjør det tydelig for brukeren at de kan velge ett eller flere alternativer, og gir nødvendig kontekst for hva valgene gjelder.

Når flere checkboxer hører sammen, bør de grupperes både visuelt og semantisk, gjerne med en overskrift eller legend.

En enkeltstående checkbox kan likevel brukes i noen tilfeller, typisk når brukeren skal bekrefte eller godta noe, som for eksempel vilkår eller samtykke. I slike situasjoner representerer checkboxen et tydelig av/på-valg, og fungerer godt alene.

Hele raden skal være klikkbar

Både checkboxen og tilhørende label skal være klikkbar. Dette gir en større trefflate og gjør komponenten enklere å bruke, spesielt på mobil og for brukere med nedsatt motorikk.

En større klikkeflate gir en mer robust og tilgivende brukeropplevelse.

Orientering som liste gir bedre skannbarhet

Alternativene skal som hovedregel vises vertikalt, én under den andre. Dette gjør det enklere å skanne listen og sammenligne valgene.

Horisontal plassering gjør det vanskeligere å lese, spesielt når teksten er ulik i lengde. Det kan også skape utfordringer for brukere som zoomer inn på siden, da innholdet lettere brytes på uforutsigbare måter.

Rekkefølge påvirker hvor lett det er å finne frem

I de fleste tilfeller bør alternativene sorteres alfabetisk, slik at brukeren raskt kan finne det de leter etter.

I noen tilfeller kan det være mer hensiktsmessig å prioritere de mest relevante eller brukte valgene øverst. Dette kan redusere tiden det tar å gjøre et valg, særlig i lengre lister.

Bruk checkbox når valgene er uavhengige

Checkboxer signaliserer at flere valg kan gjøres samtidig. Det er derfor viktig at valgene faktisk er uavhengige av hverandre.

Dersom valg påvirker hverandre eller er gjensidig utelukkende, bør man vurdere andre komponenter, som RadioButton.

Bruk indeterminate med forsiktighet

Indeterminate-tilstand (delvis valgt) kan brukes i hierarkiske valg, som "velg alle". Denne tilstanden bør kun brukes når det er tydelig hva den representerer.

Uten tydelig kontekst kan den være vanskelig å forstå og føre til usikkerhet hos brukeren.

Unngå for mange valg samtidig

Store lister med mange checkboxer kan bli krevende å navigere i. Når antall valg øker, øker også den kognitive belastningen.

Dersom listen blir lang, bør man vurdere å dele opp innholdet, bruke filtrering eller andre mekanismer for å gjøre det enklere å orientere seg.

Tilgjengelighet / universell utforming

Semantisk struktur og kobling mellom label og felt

Checkbox skal implementeres med korrekt HTML (<input type="checkbox">) og ha en programmessig koblet label. Dette gjør at skjermlesere kan formidle hva valget gjelder og hvilken tilstand det har.

Når flere checkboxer hører sammen, skal de grupperes med fieldset og legend. Dette gir nødvendig kontekst og gjør det tydelig hva valgene gjelder.

Label og legend må være tilgjengelige

Alle checkboxer må ha en tydelig label, og grupper må ha en beskrivende legend. Skjermlesere leser disse sammen med tilstanden (valgt/ikke valgt), og uten denne informasjonen mister brukeren viktig kontekst.

Teksten skal være konkret og beskrive hva som velges, slik at brukeren forstår konsekvensen av valget.

Skjule label eller legend visuelt

Hver checkbox må ha en tydelig label, og grupper av relaterte checkboxer må ha en beskrivende legend. Dersom teksten skjules visuelt, må den fortsatt være tilgjengelig for hjelpemidler.

Selv om teksten ikke er synlig, må den fortsatt være meningsfull og beskrivende. Skjermlesere leser fortsatt denne informasjonen, og den er avgjørende for at brukeren skal forstå hva valget gjelder.

Tydelig fokus og tastaturnavigasjon

Checkboxer skal være fullt opererbare med tastatur. Brukeren skal kunne navigere med Tab og endre tilstand med Space.

Fokusindikatoren må være tydelig og ha god kontrast, slik at det er enkelt å se hvilken checkbox som er aktiv.

Indeterminate må formidles korrekt

Dersom indeterminate-tilstand brukes, må denne formidles korrekt til hjelpemidler. Dette sikrer at også ikke-visuelle brukere forstår tilstanden.

Vær bevisst på bruk av disabled

Bruk av disabled state frarådes. Et deaktivert valg kan være vanskelig å oppfatte og forstå, spesielt dersom brukeren ikke får noen forklaring på hvorfor det ikke kan velges.

Tastaturnavigasjon

TastHandling
TabFlytter fokus til checkboxen
Shift+TabFlytter fokus til forrige fokuserbare element
SpaceToggler checked-tilstand

Skjermleser

  • Ved fokus: "[label], avkryssingsboks, ikke avkrysset"
  • Når avkrysset: "[label], avkryssingsboks, avkrysset"
  • Indeterminate: "[label], avkryssingsboks, delvis avkrysset"
  • Ved feil: "[label], avkryssingsboks, ugyldig, [feilmelding]"
  • Med description: "[label], avkryssingsboks, [tilstand], [description]"

WCAG-kriterier

Sist gjennomgått: 2026-05-27 — alle 56 WCAG 2.2-kriterier vurdert

WCAG-kriterier4 ditt ansvar · 15 håndtert · 37 ikke relevant · 0 ikke på plass
Ditt ansvar (4)
KriteriumNivåHva du må gjøre
2.4.6 Overskrifter og ledeteksterAASkriv beskrivende labeltekst. Labelen skal forklare hva brukeren samtykker til eller velger. "Jeg godtar vilkårene" er bedre enn bare "Godta". Alle checkboxer må ha en label.
3.3.2 Ledetekster eller instruksjonerASkriv beskrivende labeltekst. Labelen skal forklare hva brukeren samtykker til eller velger. "Jeg godtar vilkårene" er bedre enn bare "Godta". Alle checkboxer må ha en label.
4.1.2 Navn, rolle, verdiAHåndter indeterminate-tilstand programmatisk. Indeterminate-tilstanden kan ikke settes via HTML-attributt — den må settes via JavaScript (inputRef.indeterminate = true). Bruk denne tilstanden kun for "velg alle"-checkboxer der noen, men ikke alle, underliggende valg er krysset av.
1.3.1 Informasjon og relasjonerAGrupper relaterte checkboxer. Når flere checkboxer hører sammen (f.eks. "Velg interesser"), bør de grupperes med fieldset og legend for å gi kontekst til skjermleserbrukere.
Håndtert av komponenten (15)
KriteriumNivåHva komponenten gjør
1.3.1 Informasjon og relasjonerALabel kobles til checkbox via for/id. Ved bruk av Field kobles description og error via aria-describedby.
1.3.2 Meningsfull rekkefølgeACheckbox, label og hjelpetekst følger naturlig rekkefølge i DOM.
1.3.3 Sensoriske egenskaperAChecked-tilstand kommuniseres visuelt (hake-ikon) og semantisk (checked-attributt).
1.4.1 Bruk av fargeATilstand kommuniseres med ikon (hake/strek) i tillegg til farge.
1.4.4 Endre tekststørrelseAARelative enheter — skalerer korrekt ved 200 % zoom.
1.4.10 OmflytAAReflower korrekt ned til 320px viewport.
1.4.11 Kontrast for ikke-tekstlig innholdAACheckbox-ramme og fokusindikator oppfyller 3:1 kontrastkrav.
2.1.1 TastaturAFullt opererbart med tastatur. Tab for fokus, Space for å toggle.
2.1.2 Ingen tastaturfelleAFokus kan navigeres ut med Tab og Shift+Tab. Ingen tastaturfelle.
2.4.3 FokusrekkefølgeAFølger naturlig tab-rekkefølge i DOM.
2.4.7 Synlig fokusAATydelig fokusindikator med god kontrast.
2.5.8 Målstørrelse (minimum)AAKlikkflate er minimum 44x44px.
3.2.1 Ved fokusAFokus trigger ingen kontekstendring.
3.2.2 Ved inndataAToggle trigger ingen automatisk kontekstendring.
4.1.2 Navn, rolle, verdiANative checkbox med implisitt rolle. Tilgjengelig navn fra label. Checked, indeterminate og disabled eksponeres korrekt.
Ikke relevant (37)
KriteriumNivåHvorfor ikke relevant
1.1.1 Ikke-tekstlig innholdAHake-ikonet er dekorativt — tilstanden kommuniseres via checked-attributt.
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.4 VisningsretningAAIngen fast orientering — tilpasser seg visningsretning.
1.3.5 Identifiser formål med inndataAACheckbox er ikke et felt for personlig informasjon.
1.4.2 Styring av lydAIngen lydelementer.
1.4.5 Bilder av tekstAAIngen bilder av tekst.
1.4.12 TekstavstandAALabeltekst tåler økt spacing, men checkbox-boksen er fast størrelse.
1.4.13 Innhold ved hover eller fokusAA
2.1.4 TastatursnarveierAIngen egendefinerte tastatursnarveier.
2.2.1 Justerbar hastighetAIngen tidsbegrensede funksjoner.
2.2.2 Pause, stopp, skjulAIngen animasjon eller automatisk oppdatering.
2.3.1 Terskelverdi på tre glimtAIngen blinkende eller glimtende innhold.
2.4.1 Hoppe over blokkerASidekrav — gjelder ikke enkeltkomponenter.
2.4.2 SidetitlerASidekrav — gjelder ikke enkeltkomponenter.
2.4.4 Formål med lenke (i kontekst)AIngen lenker i komponenten.
2.4.5 Flere måterAASidekrav — gjelder ikke enkeltkomponenter.
2.4.11 Fokus ikke skjult (minimum)AAIngen sticky/overlappende elementer som kan skjule fokus.
2.5.1 PekerbevegelserAIngen drag-and-drop eller sveipebevegelser.
2.5.2 Avbryt pekerANative checkbox — nettleseren håndterer pekerinteraksjon.
2.5.4 BevegelsesaktiveringAIngen bevegelsesbasert interaksjon.
2.5.6 Samtidige inndatamekanismerA
2.5.7 DrabevegelserAIngen drag-and-drop.
3.1.1 Språk på sidenASidekrav — gjelder ikke enkeltkomponenter.
3.1.2 Språk på deler av innholdAAKomponenten setter ikke lang-attributt — innhold er på sidespråket.
3.2.3 Konsistent navigasjonAASidekrav — gjelder ikke enkeltkomponenter.
3.2.4 Konsistent identifikasjonAASystemkrav — gjelder konsistens på tvers av sider, ikke enkeltkomponenter.
3.2.6 Konsistent hjelpASidekrav — gjelder plassering av hjelpefunksjon på tvers av sider.
3.3.1 Identifikasjon av feilACheckbox har ikke innebygd validering — feilhåndtering styres av konsumenten.
3.3.3 Forslag ved feilAA
3.3.4 Forhindring av feil (juridisk, økonomisk, data)AAFlytkrav — gjelder bekreftelse/reversering av transaksjoner, ikke enkeltfelter.
3.3.7 Redundant oppføringAFlytkrav — gjelder at brukeren ikke skal gjenta informasjon i en prosess.
3.3.8 Tilgjengelig autentisering (minimum)AAIkke en autentiseringskomponent.
4.1.3 StatusmeldingerAAIngen statusmeldinger utover feilmelding som håndteres via aria-live.