Card

Release dato: 03.10.2024

Sist oppdatert: 20.05.2025

Card (kort) brukes for å gruppere innhold som hører sammen, og kan inneholde tekst, bilde, ikon, knapp og lenker, eller en kombinasjon av disse. Card gjør det enklere å skanne, sammenligne og velge mellom flere elementer.

Live demo

Relaterte komponenter

Varianter

Card finnes i to hovedvarianter. Du kan kombinere disse med ulike skins og farger.

LayoutBruk
PortraitInnhold stables vertikalt, fungerer godt når du legger flere card ved siden av hverandre
LandscapeNår du vil bruke mer av bredden, f.eks. i desktop-visning
SkinBruk
OutlinedNår du vil ramme inn uten bakgrunn
FilledFull bakgrunnsfarge
No paddingFjerner marger inne i cardet
BildestilBruk
SquareGir et strammere uttrykk
RoundMer lekent, harmonerer med Oslo-profilen

Retningslinjer for bruk

Bruk card når

  • du vil gruppere informasjon
  • du trenger oversiktlige valg i grid eller liste
  • du ønsker fleksibel visning med eller uten bilde, innhold eller handling

Unngå card når

  • du bare viser én ting og ikke trenger visuell gruppering
  • informasjonen egner seg bedre i ren tekst eller tabell

Tilpass cardet til ditt innholdsbehov

Komponenten er fleksibel, og du kan selv velge om du vil bruke:

  • tekst
  • tittel
  • undertittel
  • bilde
  • tags over eller under innholdet
  • lenker eller knapper

Du kan også velge om hele cardet skal være klikkbart.

Unngå å overlesse cardet. Bruk luft og visuell prioritering. Om du bruker flere card i samme løsning, kan det være lurt å designe alle like og bruke de samme elementene konsekvent.

Gjør slik

Eksempel på ryddig, tydelig og konkret innhold
Hold innholdet ryddig, tydelig og konkret

Unngå

Eksempel på cardet med mye innhold.
Unngå å overlesse cardet med innhold

Skriv tydelig og konsist

Innholdet i et card skal være lett å skanne. Bruk korte titler og tydelig handling. Hvis cardet er klikkbart, må det være klart hvor det leder, følg regler for god lenketekst.

Gjør slik

Eksempel kort og tydelig tekst på radene
Skriv lettlest innhold og tydelig lenketekst

Unngå

Eksempel lang innhold på radene
Unngå uklart innhold og utydelig lenketekst

Responsivitet

Card tilpasser seg automatisk til ulike skjermstørrelser. Innhold bryter linjer og grid flyter om ved behov.

Landscape-card skaleres automatisk ned til portrait på små skjermer. På mobil anbefaler vi å bruke portrait-layout som utgangspunkt, særlig dersom cardsene vises i listevisning.

Vi anbefaler at du uansett tester ulike visningsformer og antall cards i din løsning.

Universell utforming

Card skal kunne brukes og forstås av alle, også de som bruker tastatur eller skjermleser. Her er noen viktige prinsipper for å sikre tilgjengelighet:

Struktur og semantikk

Bruk riktig heading-nivå i konteksten der cardet vises, og sørg for at alle card på samme nivå i løsningen også benytter samme heading-nivå. Dette gir god struktur for skjermlesere og visuell lesing.

Interaktive og ikke-interaktive card

Et card kan enten være:

  • Interaktivt: hele cardet fungerer som en lenke eller knapp
  • Ikke-interaktivt: cardet inneholder klikkbare elementer som knapper eller lenker

Unngå å blande disse. Ikke legg knapper inne i et kort som allerede er klikkbart - knappen vil være umulig å nå med musepeker. Kort sagt: én handling per område.

Tastaturnavigasjon og fokus

Brukeren skal kunne bruke “Tab” for å navigere:

  • I interaktive card: Hele cardet er et tab stop og aktiveres med “Enter” eller “Mellomrom”.
  • I ikke-interaktive card: Bare knapper og lenker er fokuserbare

Alle fokuserbare elementer har tydelig visuell fokusindikator. Skriv tydelig lenketekst som skjermleseren forstår, les mer om gode lenketekster her.

Les mer om universell utforming av cards:

Anatomi

ElementBeskrivelse
1. LabelOverskrift for kortet. Bruk <h3> eller tilsvarende semantikk
2. BrødtekstForklarende tekst som utdyper innholdet
3. BildeIllustrasjon eller fotografi (valgfritt)
4. HandlingLenke eller knapp for navigasjon eller videre handling, brukes kun dersom ikke hele cardet er klikkbart (valgfritt)
5. ContainerKortets ramme, med eller uten kantlinje og padding

Implementasjon i kode

Hvordan ta komponenten i bruk?

Testing

Elements og React: Dersom du skal skrive tester med JSDOM eller liknende er det viktig at du lar komponenten bli rendret ferdig før du tester den. Dette kan gjøres ved å kjøre denne kodelinjen før testene kjøres:

await window.customElements.whenDefined("pkt-card");

Dersom du bruker verktøyene i punkt-testing-utils så kan dette bli gjort automatisk for deg.

Props og tokens

PropTypeBeskrivelse
headingstringTittel på card
headingLevel1
2
3
4
5
6
Nivået på headingen. Brukes for tilgjengelighet.
subheadingstringUndertittel på card
layoutvertical
horizontal
Stående/liggende. Portrett/landskap. Horisontal/vertikal. Kjært barn…
skinoutlined
outlined-beige
gray
blue
beige
green
Fargen på card. Velg mellom outlined, outlined-beige, gray, blue, beige og green.
paddingnone
default
Skal det være padding på innsiden av card?
metaLeadstringUndertekst med fet skriftvekt
metaTrailstringUndertekst med normal skriftvekt
tagPositiontop
bottom
Plassering av tags i card
clickCardlinkstringHref sendes inn som streng for å gjøre card klikkbart. Heading brukes som lenktetekst.
openLinkInNewTabbooleanVelg denne dersom du ønsker at lenken i card skal åpnes i ny fane.
borderOnHoverbooleanVi anbefaler hoverborder på klikkbart card. Kan slås av ved behov.
imageobjectBildet på card. Tar inn et objekt av typen {src: string, alt: string}.
imageShapesquare
round
Her kan vi velge om bildet i card skal være firkantet eller rundt.
tagsarrayListe av tags på card. Tar inn et array med objekter med følgende stringproperties: skin, iconName, ariaLabel, text
ariaLabelstringTekst til skjermleser for aria-label på card. Settes automatisk til headingen, eller subheadingen der heading ikke eksisterer.
Slot (children)Beskrivelse
defaultInnholdet i card

Farger

Card-komponenten støtter flere fargekombinasjoner for å tilpasse ulike behov og kontekster.

ElementCSS Variabel
Background
Border
Text