Skip to main content

ReadMore

ReadMore viser og skjuler én frittstående tekstblokk bak en klikkbar label. Den er nyttig for utdypende, sekundær informasjon som ikke alle trenger med en gang: brukeren ser labelen og åpner forklaringen kun ved behov. Komponenten bygger på native <details>/<summary>, så tastatur og skjermleser fungerer uten ekstra oppsett.

Egnet til

  • Utdypende forklaringer til et enkelt begrep eller spørsmål
  • Sekundær informasjon som støtter, men ikke er nødvendig for hovedinnholdet
  • Å holde tett innhold skannbart uten å skjule det helt
  • Korte «les mer»-avsnitt inne i tekstflaten

Uegnet til

  • Flere seksjoner som hører sammen — bruk heller Accordion
  • Innhold brukeren må se for å komme videre — vis det åpent
  • Navigasjon mellom sider — bruk lenker eller meny
  • Lange, strukturerte tekstmengder som bør ha egne overskrifter

Bruk

Laster...

Eksempler

Åpen som standard

Marker seksjonen med open (HTML) eller defaultOpen (React) om innholdet bør vises ved start.

Laster...

Rikt innhold

Innholdet kan bestå av tekst, lister, lenker og andre komponenter.

Laster...

Retningslinjer

Si hva som kommer når brukeren åpner

Labelen er alt brukeren har å gå etter, så den må gi mening lest alene, med det viktigste ordet først. «Slik regner vi ut renten» forteller hva som ligger bak. «Les mer» gjør det ikke.

Bruk ReadMore alene, Accordion for flere

ReadMore er én forklaring i en tekstflate. Har du flere seksjoner som hører sammen og bør stå samlet, hører de i en Accordion.

Designvalg

ReadMore bygger på native <details>/<summary> i stedet for en button-basert disclosure med aria-expanded/aria-controls. Begrunnelsen er den samme som for Accordion.

Universell utforming

Hva du selv må sørge for

  • Skriv kort og beskrivende label-tekst. Labelen er klikkflaten og må gi mening alene.
  • Ikke gjem nødvendig innhold. ReadMore er for utdypende, sekundær informasjon. Innhold brukeren må se for å komme videre skal vises åpent.
  • Bruk overskriftsnivå ved behov. Inngår labelen i en dokumentstruktur, kan du legge en <Heading>/<h3> inni labelen for korrekt overskriftshierarki.

Hva komponenten gjør automatisk

  • Disclosure-semantikk: labelen er en native <summary>: fokuserbar med Tab, åpnes/lukkes med Enter og Space, og åpen/lukket-tilstand annonseres av skjermlesere. Ingen ekstra ARIA er nødvendig.
  • Programmessig kobling: innholdet ligger inne i samme <details> som labelen, så de er knyttet sammen uten aria-controls/id.
  • Tilstandsindikator: en chevron roterer for å vise åpen/lukket. Animasjonen er kort og respekterer prefers-reduced-motion.
  • Fokusindikator: tydelig fokusring på labelen (:focus-visible).

Tastaturnavigasjon

TastHandling
TabFlytter fokus til labelen (og til fokuserbare elementer i åpent innhold)
Shift+TabFlytter fokus til forrige fokuserbare element
EnterÅpner eller lukker seksjonen når labelen har fokus
SpaceÅpner eller lukker seksjonen når labelen har fokus

Skjermleser

  • Labelen annonseres som en disclosure-knapp med åpen/lukket-tilstand (native <summary>) — f.eks. «Les mer, skjult/vist»
  • Å åpne seksjonen eksponerer innholdet som ligger inne i <details>; tilstanden annonseres uten at fokus flyttes
  • Å lukke seksjonen skjuler innholdet igjen; fokus blir værende på labelen brukeren aktiverte

WCAG-kriterier

Sist gjennomgått: 2026-09-04 — alle 56 WCAG 2.2-kriterier vurdert

WCAG-kriterier4 ditt ansvar · 15 håndtert · 36 ikke relevant · 0 ikke på plass
Ditt ansvar (4)
KriteriumNivåHva du må gjøre
2.4.6 Overskrifter og ledeteksterAASkriv kort og beskrivende label-tekst. Labelen er klikkflaten og skal beskrive hva som avsløres slik at den gir mening lest alene. Hold den kort. Teksten sendes inn av konsumenten (bokmål, nynorsk eller engelsk); komponenten har ingen hardkodet tekst.
1.3.1 Informasjon og relasjonerABruk overskriftsnivå i label ved behov. Hvis labelen inngår i en dokumentstruktur der den fungerer som en overskrift, kan du legge et passende overskriftselement (f.eks. en <Heading> / <h3>) inni labelen for korrekt overskriftshierarki. Knapp-semantikken kommer fra <summary>.
2.4.10 2.4.10?Bruk overskriftsnivå i label ved behov. Hvis labelen inngår i en dokumentstruktur der den fungerer som en overskrift, kan du legge et passende overskriftselement (f.eks. en <Heading> / <h3>) inni labelen for korrekt overskriftshierarki. Knapp-semantikken kommer fra <summary>.
1.3.1 Informasjon og relasjonerAIkke skjul innhold brukeren må se for å komme videre. ReadMore er for utdypende, sekundær informasjon. Innhold som er nødvendig for å forstå eller fullføre en oppgave skal vises åpent, ikke gjemmes bak en label.
Håndtert av komponenten (15)
KriteriumNivåHva komponenten gjør
1.3.1 Informasjon og relasjonerASemantisk struktur via native <details>/<summary>: labelen er en disclosure-knapp, innholdet er programmessig knyttet til den ved å ligge inne i samme <details>. Ingen ekstra ARIA er nødvendig.
1.3.2 Meningsfull rekkefølgeAInnhold følger naturlig leserekkefølge i DOM: label (summary) før innhold (content).
1.4.1 Bruk av fargeAÅpen/lukket-tilstand formidles av native disclosure-semantikk (annonseres av skjermleser) og chevron-ikon — ikke av farge alene.
1.4.3 Kontrast (minimum)AALabel bruker --ix-color-component-button-tertiary-foreground-default (samme tekstfarge som en tertiary-knapp) og innhold --ix-color-foreground-main-default på --ix-color-surface-main, som oppfyller kontrastkravet i både light og dark mode.
1.4.4 Endre tekststørrelseAARelative enheter (font-size-tokens) — tekst skalerer korrekt ved 200 % zoom uten at innhold brytes.
1.4.10 OmflytAAMobile-first uten faste bredder — reflower korrekt ned til 320px viewport uten horisontal scroll.
1.4.11 Kontrast for ikke-tekstlig innholdAAFokusindikator på label oppfyller 3:1 kontrastkrav via --ix-outline-default.
2.1.1 TastaturALabelen er en native <summary> — fokuserbar med Tab og åpnes/lukkes med Enter og Space. Fullt opererbart med tastatur.
2.1.2 Ingen tastaturfelleAIngen tastaturfeller — fokus navigeres fritt ut med Tab/Shift+Tab.
2.4.3 FokusrekkefølgeAFølger naturlig tab-rekkefølge i DOM: label før innhold.
2.4.7 Synlig fokusAATydelig fokusindikator på label (:focus-visible).
2.5.8 Målstørrelse (minimum)AALabelen er målt til 36px høy (chevron-ikonet på 20,25px + 2 × 8px padding) og strekker seg over hele label-teksten i bredden — godt over minimumskravet på 24 × 24 CSS-piksler. Med [data-density='compact'] er den 28px, fortsatt over kravet.
3.2.1 Ved fokusAIngen kontekstendring ved fokus. Å åpne/lukke seksjonen flytter ikke fokus og laster ikke ny kontekst.
3.2.2 Ved inndataAÅ aktivere labelen gjør kun det forventede (viser/skjuler innhold) — ingen automatisk kontekstendring.
4.1.2 Navn, rolle, verdiANative <details>/<summary> gir korrekt rolle og åpne/lukke-tilstand til skjermlesere uten ekstra ARIA. Komponenten er ren CSS og setter ingen ARIA.
Ikke relevant (36)
KriteriumNivåHvorfor ikke relevant
1.1.1 Ikke-tekstlig innholdAKomponenten har ikke eget bildeinnhold — labelen er ren tekst sendt inn av konsumenten.
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 egenskaperAFormidler ikke instruksjoner basert på sensoriske egenskaper.
1.3.4 VisningsretningAAIngen fast orientering — tilpasser seg visningsretning.
1.3.5 Identifiser formål med inndataAAIkke et skjemafelt som ber om personlig informasjon.
1.4.2 Styring av lydAIngen lydelementer.
1.4.5 Bilder av tekstAAIngen bilder av tekst.
1.4.12 TekstavstandAA
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 glimtAChevron- og åpne/lukke-animasjon er kort og respekterer prefers-reduced-motion; ingen blink.
2.4.1 Hoppe over blokkerASidekrav — gjelder ikke enkeltkomponenter.
2.4.2 SidetitlerASidekrav — gjelder ikke enkeltkomponenter.
2.4.5 Flere måterAASidekrav — gjelder ikke enkeltkomponenter.
2.5.1 PekerbevegelserAIngen gestbaserte interaksjoner — enkelt klikk/tap på label.
2.5.2 Avbryt pekerANative <summary> — 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 feilA
3.3.2 Ledetekster eller instruksjonerA
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.

Props / API

ReadMore

PropTypeStandardBeskrivelse
labelReactNodeKlikkbar label (kort og beskrivende)
childrenReactNodeInnholdet som avsløres — tekst, lister eller andre komponenter
defaultOpenbooleanfalseStart seksjonen åpen. Speiler native <details open>
classNamestringEkstra CSS-klasser på rot-<details>

Tilpasning med CSS

Trenger du ix-read-more-stylingen på HTML du setter sammen selv, kan du bruke klassene direkte. Native <details>/<summary> gir semantikk og tastatur — ingen JavaScript er nødvendig.

Tilgjengelige klasser og selektorer

Element/tilstandSelektor / attributt
Rot.ix-read-more på et <details>-element
Åpen[open]<details> (native)
Label<summary> (første barn — styles via .ix-read-more > summary)
Innhold.ix-read-more__content<div> (etter label)

Eksempel: ren HTML

<details class="ix-read-more">
<summary>Hva regnes som helsemessige begrensninger?</summary>
<div class="ix-read-more__content">
<p>Med helsemessige begrensninger mener vi funksjonshemming, sykdom eller skade som påvirker hverdagen din over tid.</p>
</div>
</details>

Den myke åpne/lukke-animasjonen er en progressiv CSS-enhancement; nettlesere uten støtte hopper bare åpent/lukket.