Header

Release dato: 25.08.2023

Sist oppdatert: 20.01.2026

Header viser avsender og hjelper brukeren Ä navigere i en lÞsning eller pÄ et nettsted. Den gir gjenkjennelighet og forutsigbarhet, og hjelper brukeren Ä forstÄ hvor hen er, og hva som er mulig Ä gjÞre videre. Headeren skal vÊre lik pÄ alle sider i samme kontekst.

Vi skiller mellom global header og service header, som dekker ulike brukerbehov og brukes i forskjellige type lĂžsninger.

ForhÄndsvisningen er dessverre for smal til Ä vise desktop-versjonen av header. Vi anbefaler at du Äpner forhÄndsvisningen i fullskjerm for Ä teste for stor skjerm.

Test komponenten

Relaterte komponenter

Varianter

TypeBruk
Global headerBrukes pÄ Äpne sider som henger tett sammen med oslo.kommune.no, inneholder global navigasjon og globalt sÞk
Service headerBrukes i innloggede lĂžsninger og interne verktĂžy. Viser logo, avsender, navigasjonslenker og/eller brukermeny

Merk: Denne dokumentasjonen beskriver kun service header. Global header utvikles som del av oslo.kommune.no og webforvaltningen og kommer snart i Punkt.

Valg av header er et overordnet valg og skal tas tidlig i designprosessen. Valget pÄvirker navigasjon, sÞk, innlogging og hvordan brukeren forstÄr konteksten lÞsningen inngÄr i.

Global header
Global header
Service header
Service header

Retningslinjer for bruk

Bruk global header nÄr

  • lĂžsningen er en del av et Ă„pne nettsider
  • innholdet er publisert og tilgjengelig uten innlogging
  • brukeren forventer global navigasjon og globalt sĂžk
  • lĂžsningen er del av eller tett integrert med oslo.kommune.no

Global header brukes nÄr lÞsningen fÞrst og fremst skal fungere som et nettsted, ikke som en avgrenset tjeneste.

Bruk service header nÄr

  • lĂžsningen er et internt verktĂžy eller en innlogget tjeneste
  • brukeren skal kunne se hvem hen er innlogget som
  • lĂžsningen har lokal navigasjon eller avgrenset funksjonalitet
  • tjenesten ikke er en del av oslo.kommune.no

UnngÄ Ä blande global og service header

  • ikke kombiner global navigasjon med lokal tjenestenavigasjon
  • ikke bruk globalt sĂžk i innloggede tjenester

Headeren skal vÊre enkel Ä forstÄ

Headeren skal hjelpe brukeren Ä orientere seg raskt og forstÄ strukturen i lÞsningen.

Enkel betyr ikke fÄ elementer, men at hvert element har en tydelig rolle og er plassert der brukeren forventer Ä finne det.

Header bestÄr av tre seksjoner:

  • logo og avsender
  • navigasjonslenker og handlinger
  • brukermeny eller logg ut

Logo og avsender stÄr alltid til venstre. Navigasjon og innloggingselementer stÄr til hÞyre. Du skal aldri endre plassering eller stÞrrelse pÄ logoen.

Du stÄr fritt til Ä velge hvilke elementer du vil bruke, men unngÄ Ä bruke alle. For mye innhold gjÞr navigasjonen uklar. Test navigasjonen pÄ mÄlgruppen fÞr du lander strukturen.

Forklaring av posisjoner og dimensjoner tilgjengelig til hver element i headeren

Avsender og utlogging

Logger du inn sÄ mÄ du ha mulighet for Ä logge ut, dette gjelder i bÄde global og custom header. NÄr brukeren har logget inn mÄ du enten ha brukermenyen tilgjengelig, eller logg ut-knapp.

  • Hvis brukeren ikke er innlogget, skal logoen som regel lenke til oslo.kommune.no
  • Noen interne systemer kan peke direkte til en intern startside i stedet for kommunens hovednettsted, men vi anbefaler at du brukertester
  • Hvis brukeren er innlogget, kan logoen vĂŠre statisk, og i stedet vises en avsenderlenke (for eksempel “BymiljĂžetaten” eller navnet pĂ„ lĂžsningen) som leder til startsiden

Bruk riktig sĂžkefelt

Valg av sĂžkefelt signaliserer hva brukeren sĂžker i. Globalt sĂžk og lokalt sĂžk skal derfor aldri oppleves som samme funksjon.

Global header bruker Search input i Global styling. Service header skal bruke Search input med Local styling. Dette skiller tydelig mellom sÞk i en innlogget tjeneste eller lÞsning og sÞket pÄ oslo.kommune.no.

Global header med globalt sĂžk
Service header med lokalt sĂžk

Responsivitet

Header tilpasser seg skjermbredden, men fordi innholdet varierer mellom tjenester, mÄ du selv teste hvor breakpoints skal slÄ inn.

Ved liten skjermbredde skal:

  • navigasjonen samles i hamburgermeny
  • brukermenyen lĂžsne fra headeren og vises under i en egen seksjon

Vi anbefaler at du tester pÄ:

  • mobil i portrett og landskap
  • nettbrett
  • zoom pĂ„ 200%
Header pÄ mobilHeader pÄ mobil
Global header
Header pÄ mobilHeader pÄ mobil
Service header

Universell utforming

Headeren skal fungere med tastatur

Alle interaktive elementer skal kunne brukes med tastatur alene. Sþrg for at “Tab”, “Enter” og “Esc” fungerer som forventet i navigasjon og brukermeny.

Bruk riktige landemerker og ARIA-roller

  • bruk <header> eller role="banner"
  • bruk role="navigation" og aria-label hvis det finnes flere navigasjoner pĂ„ siden
  • bruk aria-expanded og aria-controls pĂ„ nedtrekksmenyen

GjÞr innholdet forstÄelig for skjermlesere

Bruk beskrivende tekster pĂ„ alle knapper og lenker. UnngĂ„ generiske formuleringer som “klikk her”. Brukeren skal kunne forstĂ„ struktur og formĂ„l uten visuell kontekst.

Test pÄ smÄ skjermer og hÞy zoom

Headeren skal fungere uansett navigasjonsmetode, skjermstÞrrelse eller zoom-nivÄ.

Anatomi global header

ElementBeskrivelse
1. BakgrunnHvit bakgrunn i hele headeren
2. Oslo-logoPlassert til venstre, lenker til forsiden
3. Avsender (valgfritt)Navn pÄ tjeneste ved siden av logoen
4. Meny (valgfritt)Meny for navigasjon
5. Innlogget meny (valgfritt)Meny for innloggede brukere
6. Logg ut-knapp (valgfritt)Knapp for utlogging
Header anatomi.

Anatomi service header

ElementBeskrivelse
1. BakgrunnHvit bakgrunn i hele headeren
2. Oslo-logoPlassert til venstre, lenker til forsiden
3. Avsender (valgfritt)Navn pÄ tjeneste ved siden av logoen
4. Meny (valgfritt)Meny for navigasjon
5. Brukermeny (valgfritt)Meny for innloggede brukere
6. Logg ut-knapp (valgfritt)Knapp for utlogging

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

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

Mulighet for Ă„ gjĂžre logo til en knapp

Det er mulig Ä gjÞre logo-lenken til en knapp med funksjon. Dette anbefales ikke, men tillates dersom applikasjonen deres forlanger at «Hjem»-lenken er en knapp.

Om du kun bruker CSS

Dersom denne brukes med bare CSS mÄ du selv sÞrge for funksjonalitet for Ä Äpne brukermeny og sette aria-verdier som opprettholder god UU.

Endringer fra versjon 13 til versjon 14

Versjon 14 av PktHeader introduserer flere nye funksjoner og forbedringer, samt noen breaking changes. Hovedfokus er bedre fleksibilitet og mer eksplisitte API-er.

Nye funksjoner

Prop/EventBeskrivelse
showSearchVis/skjul sĂžkefelt i headeren
searchPlaceholderTilpass placeholder-tekst i sĂžkefeltet
searchValueKontrollert verdi for sĂžkefeltet
onSearchEvent som trigges nÄr bruker trykker Enter i sÞkefeltet
onSearchChangeEvent som trigges nÄr sÞketekst endres
logoClickCallback/event for Ă„ gjĂžre logoen til en knapp i stedet for lenke
serviceLinkGjĂžr tjenestenavnet til en klikkbar lenke
serviceClickCallback/event for Ă„ gjĂžre tjenestenavnet til en knapp
hideLogoMulighet til Ă„ skjule Oslo-logoen helt
compactKompakt header-hĂžyde
mobileBreakpointEgendefinert breakpoint i piksler for grid-layout (1-rad vs 2-rader). Standard: 768
tabletBreakpointEgendefinert breakpoint i piksler for interaksjonsmĂžnster (dropdown vs inline). Standard: 1280
openedMenuKontroller hvilken meny som er Äpen ved oppstart
logOutButtonPlacementFleksibel plassering av logg ut-knapp: userMenu, header, both, none

Breaking changes

Fjernede props

Gammel propErstatning
fixedposition med verdier fixed eller relative
scrollToHidescrollBehavior med verdier hide eller none
showLogOutButtonlogOutButtonPlacement med verdier userMenu, header, both, none
showMenuButtonFjernet uten erstatning, kommer muligens tilbake i global headervariant

Deprecated props

PropErstatning
userMenuFooterDenne brukes ikke lenger. Legg inn i userMenu i stedet
userOptionsDenne brukes ikke lenger. Legg inn i userMenu i stedet
user.shortnameDeprecated
representing.shortnameDeprecated

Andre breaking changes

Type endringBeskrivelse
Fjernet eventlogIn event er fjernet
Required endringuser.name er nÄ pÄkrevd hvis user-objektet sendes inn
Required endringrepresenting.name er nÄ pÄkrevd hvis representing-objektet sendes inn
StandardverdilogoLink har ikke lenger standardverdi https://www.oslo.kommune.no/
StandardverdilogOutButtonPlacement har standardverdi none (tidligere viste showLogOutButton default true)
Type-endringuser.lastLoggedIn stÞtter nÄ bÄde string og Date
Type-endringuserMenu[].target stÞtter nÄ bÄde string og function
Type-endringrepresenting.orgNumber stÞtter nÄ bÄde string og number

Props

PropTypeBeskrivelse
hideLogo
hide-logo
booleanSkal Oslo-logoen skjules?
logoLink
logo-link
stringURL-lenke for logoen. Hvis du vil ha en knapp i stedet, bruk logoClick-prop (React) eller legg til en tom logo-link og lytt til logo-click event (custom element).
logoClickfunctionCallback-funksjon som kalles nÄr brukeren klikker pÄ logoen (kun React). For custom element, bruk logo-click event.
serviceName
service-name
stringNavnet pÄ tjenesten som vises i headeren
serviceLink
service-link
stringURL-lenke for tjenestenavnet. Hvis du vil ha en knapp i stedet, bruk serviceClick-prop (React) eller legg til en tom logo-link og lytt til service-click event (custom element).
serviceClickfunctionCallback-funksjon som kalles nÄr brukeren klikker pÄ tjenestenavnet (kun React). For custom element, bruk service-click event.
compact
compact
booleanBruk kompakt header-hĂžyde
position
position
fixed
relative
Headerens posisjonering. 'fixed' fester headeren til toppen av viewporten, 'relative' lar den fĂžlge dokumentflyten.
scrollBehavior
scroll-behavior
hide
none
Headerens oppfÞrsel ved skrolling. 'hide' skjuler headeren nÄr brukeren skroller ned, 'none' holder headeren alltid synlig.
user
user
objectBrukerobjektet som inneholder informasjon om den innloggede brukeren (object med name og lastLoggedIn (streng eller datoobject))
userMenu
user-menu
arrayMenyen som vises nÄr brukeren klikker pÄ brukerknapp (array av objekter med iconName, title og target)
representing
representing
objectObjekt som inneholder informasjon om representasjon, hvis aktuelt (object med name og orgNumber)
canChangeRepresentation
can-change-representation
booleanSkal brukeren kunne endre representasjon? Viser 'Endre organisasjon'-knapp
logOutButtonPlacement
log-out-button-placement
userMenu
header
both
none
Hvor skal logg ut-knappen vises?
showSearch
show-search
booleanSkal sĂžkefeltet vises i headeren?
searchPlaceholder
search-placeholder
stringPlaceholder-tekst i sĂžkefeltet
searchValue
search-value
stringKontrollert verdi for sĂžkefeltet
mobileBreakpoint
mobile-breakpoint
numberEgendefinert breakpoint for mobil-utseende i piksler
tabletBreakpoint
tablet-breakpoint
numberEgendefinert breakpoint for tablet-utseende i piksler
openedMenu
opened-menu
none
slot
search
user
Hvilken meny som skal vÊre Äpen ved oppstart
slotMenuVariant
slot-menu-variant
icon-only
icon-right
Variant for menyknappen i tablet/mobil-modus
slotMenuText
slot-menu-text
stringTekst som vises pÄ menyknappen i tablet/mobil-modus
EventBeskrivelse
changeRepresentationBruker endrer representasjon
logOutBruker klikker pÄ logg ut-knappen
onSearchBruker sĂžker (trykker Enter i sĂžkefeltet)
onSearchChangeBruker endrer sĂžketeksten
logoClickBruker klikker pÄ logoen (custom element). I React brukes logoClick som prop.
serviceClickBruker klikker pÄ tjenestenavnet (custom element). I React brukes serviceClick som prop.