Card
Release dato: 03.10.2024
Sist oppdatert: 26.10.2026
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.
Test komponenten

Symrahagen barnehage
En barnehage i Oslo by
Relaterte komponenter
Når hele cardet kun skal være en lenke uten fleksibelt innhold.
Når du skal vise strukturerte data i kolonner og rader.
Når du vil vise en fremhevet melding med ikon og tekst.
Varianter
Card finnes i to hovedvarianter. Du kan kombinere disse med ulike skins og farger.
| Layout | Bruk |
|---|---|
| Portrait | Innhold stables vertikalt, fungerer godt når du legger flere card ved siden av hverandre |
| Landscape | Når du vil bruke mer av bredden, f.eks. i desktop-visning |
| Skin | Bruk |
|---|---|
| Gray | Standard. Grå bakgrunn |
| Outlined | Ramme uten bakgrunn. Bildet får luft rundt seg |
| Transparent | Uten bakgrunn og padding. Teksten flukter med bildet |
| White | Hvit bakgrunn, til bruk på fargede flater |
| Blue | Blå bakgrunn, når du vil fremheve innhold |
| Green | Grønn bakgrunn, når du vil fremheve innhold |
| Beige | Beige bakgrunn, når du vil fremheve innhold |
Gray, outlined og transparent støtter mørk modus. White, blue, green og beige har ingen mørk variant. De beholder fargene fra lys modus, også teksten.
Bilde
Bildet har fast høyde som øker med bredden på cardet, og beskjæres fra midten. Da får like brede card lik bildehøyde, uansett størrelsen på bildene. Trenger du et bestemt sideforhold, kan du bruke imageAspect.
Klikkbart card
Når hele cardet er en lenke, får overskriften en pil. Når musepekeren er over cardet, blir teksten blå og overskriften understreket.
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
Unngå
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
Unngå
Responsivitet
Card tilpasser seg automatisk til ulike skjermstørrelser. Innhold bryter linjer og grid flyter om ved behov.
Landscape-card legger seg som portrait når cardet er smalere enn 36rem. Det er bredden på cardet som avgjør, ikke skjermen, så et smalt card stables også på en bred skjerm. 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
| Element | Beskrivelse |
|---|---|
| 1. Label | Overskrift for kortet. Bruk <h3> eller tilsvarende semantikk |
| 2. Brødtekst | Forklarende tekst som utdyper innholdet |
| 3. Bilde | Illustrasjon eller fotografi (valgfritt) |
| 4. Handling | Lenke eller knapp for navigasjon eller videre handling, brukes kun dersom ikke hele cardet er klikkbart (valgfritt) |
| 5. Container | Kortets flate, med bakgrunnsfarge eller kantlinje |
Implementasjon i kode
Hvordan ta komponenten i bruk?
import @oslokommune/punkt-elements/dist/pkt-card.js;import { PktCard } from '@oslokommune/punkt-react';<script src="https://punkt-cdn.oslo.kommune.no/20/elements/pkt-card.js" type="module"></script>Testing
Elements: 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");Egenskaper
Props
- Prop:
heading?- Type:
string- Beskrivelse:
- Tittel på card
- Prop:
headingLevel?headinglevel?- Type:
"1" | "2" | "3" | "4" | "5" | "6"- Standardverdi:
3- Beskrivelse:
- Nivået på headingen. Brukes for tilgjengelighet.
- Prop:
subheading?- Type:
string- Beskrivelse:
- Undertittel på card
- Prop:
layout?- Type:
"vertical" | "horizontal"- Standardverdi:
"vertical"- Beskrivelse:
- Horisontal eller vertikal layout. Ved horisontal layout ligger bildet til venstre for teksten når cardet er minst 36rem bredt, og over teksten når cardet er smalere. Det er bredden på cardet som avgjør, ikke skjermen.
- Prop:
skin?- Type:
"gray" | "outlined" | "transparent" | "white" | "blue" | "green" | "beige"- Standardverdi:
"gray"- Beskrivelse:
- Fargen på card. Velg mellom gray, outlined, transparent, white, blue, green og beige. Transparent har verken bakgrunn eller padding, så teksten flukter med bildet. Gray, outlined og transparent har mørk modus; white, blue, green og beige ser like ut i lys og mørk modus.
- Prop:
metaLead?- Type:
string- Beskrivelse:
- Undertekst med fet skriftvekt
- Prop:
metaTrail?- Type:
string- Beskrivelse:
- Undertekst med normal skriftvekt
- Prop:
tagPosition?- Type:
"top" | "bottom"- Standardverdi:
"top"- Beskrivelse:
- Plassering av tags i card
- Prop:
clickCardLink?- Type:
string- Beskrivelse:
- Href sendes inn som streng for å gjøre card klikkbart. Ved bruk MÅ heading sendes inn da denne vil brukes som lenketekst i klikkbart card. Klikkbart card får en pil rett etter overskriften.
- Prop:
openLinkInNewTab?- Type:
boolean- Standardverdi:
false- Beskrivelse:
- Velg denne dersom du ønsker at lenken i card skal åpnes i ny fane.
- Prop:
zoom?- Type:
boolean- Standardverdi:
false- Beskrivelse:
- Forstørrer bildet litt når man holder musepekeren over kortet
- Prop:
image?- Type:
ICardImage- Beskrivelse:
- Bildet på card. Tar inn et objekt av typen {src: string, alt: string}.
- Prop:
imageAspect?- Type:
"auto" | "1-1" | "4-3" | "3-2" | "16-9" | "19-10"- Beskrivelse:
- Bruker et sideforhold i stedet for den faste bildehøyden. Uten denne har bildet fast høyde som øker med bredden på cardet, og beskjæres sentrert. Stående: 12.5rem, 14.375rem fra 20rem bredde og 18.125rem fra 30rem. Liggende: 11.5rem når cardet er stablet, 17.875rem fra 36rem bredde og 18.75rem fra 48rem.
- Prop:
tags?- Type:
array- Beskrivelse:
- Liste av tags på card. Tar inn et array med objekter med følgende stringproperties: skin, iconName, ariaLabel, text
- Prop:
ariaLabel?- Type:
string- Beskrivelse:
- Tekst til skjermleser for aria-label på card. Settes automatisk til headingen, eller subheadingen der heading ikke eksisterer. Ved bruk av klikkbart card må heading alltid sendes inn da denne brukes som lenketekst.
Slots
- Slot:
default- Beskrivelse:
- Innholdet i card
Bildet på card. Tar inn et objekt av typen {src: string, alt: string}.
- Prop:
src- Type:
string- Beskrivelse:
- Stien til bildet
- Prop:
alt?- Type:
string- Beskrivelse:
- Tekst til skjermleser. Skal kun sendes inn for bilder som ikke er dekorative
- Prop:
skin?- Type:
"blue" | "green" | "red" | "yellow"- Beskrivelse:
- Farge på tag
- Prop:
iconName?- Type:
icon- Beskrivelse:
- Id på ikonet du ønsker å bruke til tag
- Prop:
ariaLabel?- Type:
string- Beskrivelse:
- Tekst for aria-label
- Prop:
text- Type:
string- Beskrivelse:
- Tekst på tag