Button

Release dato: 13.03.2023

Sist oppdatert: 07.07.2025

Button lar brukeren utføre en handling, for eksempel å sende inn et skjema, starte en prosess eller navigere videre. Den skal være tydelig, gi god tilbakemelding og plasseres der handlingen hører hjemme.

Live demo

Relaterte komponenter

Varianter

Skins

Buttons i Punkt har 3 ulike varianter (skins) og 3 ulike størrelser.

SkinBruk
PrimaryHovedhandling på siden. Brukes én gang per flate
SecondaryFor alternative eller mindre viktige handlinger
TertiaryNår button ikke skal ta oppmerksomhet, f.eks. «Avbryt»

Størrelser

Button kan også brukes i tre ulike størrelser:

StørrelseBruk
SmallFor trange flater, som tabeller
Medium (default)Standard, og skal brukes som hovedregel
LargeFor ekstra oppmerksomhet

Farger

Button har også flere mulige farger. Vi anbefaler å bruke standardfargen Osloblå, men du kan spe på med andre farger i spesielle tilfeller.

FargeBruk
BlueStandardfarge. Bruk denne så ofte som mulig
Blue outlineFor spesielle tilfeller, bruk med måte
GreenFor å bekrefte suksess, f.eks. «Fullfør»
Green outlineFor spesielle tilfeller, bruk med måte
Dark greenFor spesielle tilfeller, bruk med måte
Darg green outlineFor spesielle tilfeller, bruk med måte
Light beigeFor spesielle tilfeller, bruk med måte
Dark beige outlineFor spesielle tilfeller, bruk med måte
YellowFor spesielle tilfeller, bruk med måte
Yellow outlineFor spesielle tilfeller, bruk med måte
RedFor destruktive handlinger, som «Slett»
Red outlineFor spesielle tilfeller, bruk med måte
VariantBruk
Label onlyKun tekst
Icon rightTekst + ikon til høyre
Icon leftTekst + ikon til venstre
Icon right and leftTekst + ikon til høyre og til venstre
Icon onlyKun ikon, unngå bruk med mindre noe annet er mulig

Retningslinjer for bruk

Bruk button når

  • brukeren skal utføre en konkret handling på siden
  • handlingen ikke innebærer å gå til en ny side

Unngå button når

  • handlingen er navigasjon til en ny side (bruk da heller en lenke)
  • du vil vise status eller informasjon (bruk tag eller tabs)

En tommelfingerregel er å skille mellom funksjonen til link og button:

  • Bruk link når brukeren skal komme til en ny side
  • Bruk button når brukerne skal utføre en konkret handling: logg inn, send, last opp osv.

Med det sagt, så er ikke dette noe som er satt i stein. Det vil være tilfeller der en button fungerer bedre enn en lenke selvom brukeren navigerer til en ny side, f.eks dersom det kun er én primærhandling brukeren kan gjøre på den aktuelle siden.

Skriv tydelige tekster

Teksten i button skal være så enkel og tydelig som mulig. Bruk aktivt språk, gjerne verb i imperativ, og maks to – tre ord. Husk at teksten skal forklare hva som skjer.

Gjør slik

Eksempel klart og tydelig innhold
Skriv tydelig og klart innhold

Unngå

Eksempel ufullstendig og uklart innhold
Unngå ufullstendig og uklart innhold, tenk skjermleser

Button er merkevarebærende

Buttons er noe av det brukeren legger mest merke til i en løsning. De signaliserer ikke bare handling, men også stil og tone. Derfor er det viktig å bruke farger og former som støtter Oslos visuelle identitet og gir en gjenkjennelig opplevelse.

Bruk primærfargen (mørkeblå) som hovedregel. Unngå å bruke sterke farger som grønn, rød og gul hvis det ikke er nødvendig. Disse fargene skal kun brukes for å understøtte et tydelig budskap, ikke for variasjon.

I Oslo kommunes løsninger bruker vi ikke buttons med avrundede hjørner. Formen skal være tydelig, enkel og i tråd med Oslo-profilen.

Gjør slik

Eksempel klart og tydelig innhold
Følg Oslo kommunes retningslinjer

Unngå

Eksempel ufullstendig og uklart innhold
Unngå egen styling og varianter av button

Responsivitet

Button tilpasser seg tilgjengelig plass og innhold. På små skjermer anbefaler vi å bruke fullbredde for å sikre god trykkflate.

Unngå mange buttons på én rad. Da bør de stables vertikalt.

Universell utforming

Button skal fungere for alle brukere, derfor er det viktig at button

  • er tilgjengelig med med tastaturnavigering og aktiveres med “Enter” eller “Space”
  • viser tydelig fokusmarkering når den er aktiv

Unngå deaktiverte buttons

Brukere forstår ofte ikke hvorfor en button er deaktivert. Derfor anbefaler vi å heller vise en feilmelding eller en hjelpetekst, enn å bruke disabled button.

Hvis du må deaktivere en button, må det være tydelig for brukeren hvorfor den er deaktivert og hva som må til for å aktivere den igjen.

Mer om universell utforming av buttons:

Anatomi

ElementBeskrivelse
1. BakgrunnBakgrunnsfarge (evt. outline)
2. Tekst (valgfritt)Forklarer handlingen
3. Ikon (valgfritt)Kan stå uten, foran eller etter tekst

Implementasjon i kode

Hvordan ta komponenten i bruk?

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-button");

Overstyring av sti til loading-animasjon

I likhet med Icon-komponentens overstyring av sti til ikoner kan man overstyre stien til loading-animasjonen globalt ved å sette sti i window.pktAnimationPath.

Props og tokens

PropTypeBeskrivelse
sizesmall
medium
large
Knappens størrelse
skinprimary
secondary
tertiary
Er knappen primær, sekundær eller tertiær?
typebutton
submit
reset
Hvilken type knapp er dette?
colorblue
blue-outline
green
green-outline
green-dark
green-dark-outline
beige-light
beige-dark-outline
yellow
yellow-outline
red
red-outline
Denne verdien overstyrer ‘skin’/utseende
statenormal
focus
hover
active
Her kan vi forhåndsvise knappens tilstander
variantlabel-only
icon-left
icon-right
icon-only
icons-right-and-left
Med eller uten ikon eller tekst
iconNameiconNavn på ikonet som skal vises
secondIconNameiconNavn på det andre ikonet som skal vises
isLoadingbooleanSpinner for å vise at knappen er opptatt
disabledbooleanDeaktiverer knappen
Slot (children)Beskrivelse
defaultInnholdet i knappen
EventBeskrivelse
onClickKlikk-event for knappen

Farger

ElementCSS Variabel
Background/border
Text

Du kan bruke flere farger fra fargepalleten (se alle mulighetene under varianter), men sørg alltid for å teste at du har god nok kontrast til bakgrunnen button ligger på.