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.
Denne komponenten er under forbedring. Har du innspill, forslag eller tilbakemeldinger? Ta kontakt pÄ #punkt pÄ Slack eller send en e-post til punkt@dig.oslo.kommune.no.
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
Innhold nederst pÄ siden eller lÞsningen din.
Samler navigasjonslenker i en meny i toppen
Viser hvor brukeren befinner seg i sidens struktur
Varianter
| Type | Bruk |
|---|---|
| Global header | Brukes pÄ Äpne sider som henger tett sammen med oslo.kommune.no, inneholder global navigasjon og globalt sÞk |
| Service header | Brukes 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.
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.
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.
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%
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>ellerrole="banner" - bruk
role="navigation"ogaria-labelhvis det finnes flere navigasjoner pÄ siden - bruk
aria-expandedogaria-controlspÄ 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Ä.
Forskning og anbefalinger for hvordan brukere forstÄr og beveger seg i digitale tjenester
Hvordan navigasjon og meny skal fungere med tastatur og skjermleser
Anatomi global header
| Element | Beskrivelse |
|---|---|
| 1. Bakgrunn | Hvit bakgrunn i hele headeren |
| 2. Oslo-logo | Plassert 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 |
Anatomi service header
| Element | Beskrivelse |
|---|---|
| 1. Bakgrunn | Hvit bakgrunn i hele headeren |
| 2. Oslo-logo | Plassert 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?
import @oslokommune/punkt-elements/dist/pkt-header.js; import { PktHeader } from '@oslokommune/punkt-react'; <script src="https://punkt-cdn.oslo.kommune.no/latest/elements/pkt-header.js" type="module"></script> 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/Event | Beskrivelse |
|---|---|
showSearch | Vis/skjul sĂžkefelt i headeren |
searchPlaceholder | Tilpass placeholder-tekst i sĂžkefeltet |
searchValue | Kontrollert verdi for sĂžkefeltet |
onSearch | Event som trigges nÄr bruker trykker Enter i sÞkefeltet |
onSearchChange | Event som trigges nÄr sÞketekst endres |
logoClick | Callback/event for Ă„ gjĂžre logoen til en knapp i stedet for lenke |
serviceLink | GjĂžr tjenestenavnet til en klikkbar lenke |
serviceClick | Callback/event for Ă„ gjĂžre tjenestenavnet til en knapp |
hideLogo | Mulighet til Ă„ skjule Oslo-logoen helt |
compact | Kompakt header-hĂžyde |
mobileBreakpoint | Egendefinert breakpoint i piksler for grid-layout (1-rad vs 2-rader). Standard: 768 |
tabletBreakpoint | Egendefinert breakpoint i piksler for interaksjonsmĂžnster (dropdown vs inline). Standard: 1280 |
openedMenu | Kontroller hvilken meny som er Äpen ved oppstart |
logOutButtonPlacement | Fleksibel plassering av logg ut-knapp: userMenu, header, both, none |
Breaking changes
Fjernede props
| Gammel prop | Erstatning |
|---|---|
fixed | position med verdier fixed eller relative |
scrollToHide | scrollBehavior med verdier hide eller none |
showLogOutButton | logOutButtonPlacement med verdier userMenu, header, both, none |
showMenuButton | Fjernet uten erstatning, kommer muligens tilbake i global headervariant |
Deprecated props
| Prop | Erstatning |
|---|---|
userMenuFooter | Denne brukes ikke lenger. Legg inn i userMenu i stedet |
userOptions | Denne brukes ikke lenger. Legg inn i userMenu i stedet |
user.shortname | Deprecated |
representing.shortname | Deprecated |
Andre breaking changes
| Type endring | Beskrivelse |
|---|---|
| Fjernet event | logIn event er fjernet |
| Required endring | user.name er nÄ pÄkrevd hvis user-objektet sendes inn |
| Required endring | representing.name er nÄ pÄkrevd hvis representing-objektet sendes inn |
| Standardverdi | logoLink har ikke lenger standardverdi https://www.oslo.kommune.no/ |
| Standardverdi | logOutButtonPlacement har standardverdi none (tidligere viste showLogOutButton default true) |
| Type-endring | user.lastLoggedIn stÞtter nÄ bÄde string og Date |
| Type-endring | userMenu[].target stÞtter nÄ bÄde string og function |
| Type-endring | representing.orgNumber stÞtter nÄ bÄde string og number |
Props
| Prop | Type | Beskrivelse |
|---|---|---|
| boolean | Skal Oslo-logoen skjules? |
| string | URL-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). |
logoClick | function | Callback-funksjon som kalles nÄr brukeren klikker pÄ logoen (kun React). For custom element, bruk logo-click event. |
| string | Navnet pÄ tjenesten som vises i headeren |
| string | URL-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). |
serviceClick | function | Callback-funksjon som kalles nÄr brukeren klikker pÄ tjenestenavnet (kun React). For custom element, bruk service-click event. |
| boolean | Bruk kompakt header-hĂžyde |
| fixedrelative | Headerens posisjonering. 'fixed' fester headeren til toppen av viewporten, 'relative' lar den fĂžlge dokumentflyten. |
| hidenone | Headerens oppfÞrsel ved skrolling. 'hide' skjuler headeren nÄr brukeren skroller ned, 'none' holder headeren alltid synlig. |
| object | Brukerobjektet som inneholder informasjon om den innloggede brukeren (object med name og lastLoggedIn (streng eller datoobject)) |
| array | Menyen som vises nÄr brukeren klikker pÄ brukerknapp (array av objekter med iconName, title og target) |
| object | Objekt som inneholder informasjon om representasjon, hvis aktuelt (object med name og orgNumber) |
| boolean | Skal brukeren kunne endre representasjon? Viser 'Endre organisasjon'-knapp |
| userMenuheaderbothnone | Hvor skal logg ut-knappen vises? |
| boolean | Skal sĂžkefeltet vises i headeren? |
| string | Placeholder-tekst i sĂžkefeltet |
| string | Kontrollert verdi for sĂžkefeltet |
| number | Egendefinert breakpoint for mobil-utseende i piksler |
| number | Egendefinert breakpoint for tablet-utseende i piksler |
| noneslotsearchuser | Hvilken meny som skal vÊre Äpen ved oppstart |
| icon-onlyicon-right | Variant for menyknappen i tablet/mobil-modus |
| string | Tekst som vises pÄ menyknappen i tablet/mobil-modus |
| Event | Beskrivelse |
|---|---|
changeRepresentation | Bruker endrer representasjon |
logOut | Bruker klikker pÄ logg ut-knappen |
onSearch | Bruker sĂžker (trykker Enter i sĂžkefeltet) |
onSearchChange | Bruker endrer sĂžketeksten |
logoClick | Bruker klikker pÄ logoen (custom element). I React brukes logoClick som prop. |
serviceClick | Bruker klikker pÄ tjenestenavnet (custom element). I React brukes serviceClick som prop. |