Breadcrumbs
Release dato: 14.09.2023
Sist oppdatert: 16.05.2025
Breadcrumbs (brÞdsmulesti) viser brukeren hvor de er i strukturen, og gjÞr det mulig Ä navigere tilbake til hÞyere nivÄ. Den hjelper brukeren med Ä forstÄ hierarkiet og finne veien tilbake.
Test komponenten
Relaterte komponenter
En enkel lenke for Ä gÄ tilbake til forrige side eller et hÞyere nivÄ.
NĂ„r âtilbakeâ er en aktiv handling brukeren mĂ„ ta stilling til.
Header og header menu gir full tilgang til hovednavigasjonen.
Varianter
Punkt stÞtter bÄde backlink og breadcrumbs som navigasjonsmÞnstre. Du mÄ vÊre konsekvent i lÞsningen din og kun bruke én av dem.
| Type | Bruk |
|---|---|
| Backlink | Brukes for Ä gÄ ett steg tilbake, for eksempel til en overordnet side eller oversikt |
| Breadcrumbs | Viser hvor brukeren er i en hierarkisk struktur og gir mulighet til Ä hoppe til et hvilket som helst nivÄ |
Viktig: Hvis lÞsningen din skal brukes sammen med Oslo kommune sine Äpne nettsider (www.oslo.kommune.no), skal du alltid bruke backlink, aldri breadcrumbs.
Retningslinjer for bruk
Bruk breadcrumbs nÄr
- lĂžsningen har et tydelig hierarki
- du vil gi oversikt over hvor brukeren er i strukturen
- brukeren skal kunne hoppe tilbake til et overordnet nivÄ
UnngÄ breadcrumbs nÄr
- hierarkiet er grunt (bruk heller backlink)
- brukerens vei tilbake ikke er entydig
- det finnes annen navigasjon som dekker behovet
Skriv korte og tydelige lenketekster
Hvert nivĂ„ bĂžr ha et enkelt og beskrivende navn. UnngĂ„ tekniske eller interne navn (f.eks. â/nav/root/sub/areaâ).
GjĂžr slik
UnngÄ
Responsivitet
Breadcrumbs bryter automatisk linje dersom det ikke er nok plass pÄ én linje.
- Lenketekstene skaleres ikke ned
- Det er ingen automatisk forkorting eller komprimering (f.eks. «âŠÂ»)
- Separatoren (>) vises mellom hvert nivÄ, uavhengig av skjermstÞrrelse
SĂžrg for at breadcrumbs fungerer visuelt i din lĂžsning, spesielt hvis den vises sammen med tittel, filter eller toppnavigasjon.
Det vanligste er Ä gÄ for backlink pÄ mobil pÄ grunn av mindre plass, du mÄ selv vurdere hva som fungerer best i din lÞsning.
Universell utforming
Lenketeksten mÄ gi mening alene
Teksten i breadcrumbs skal vÊre tydelig og fortelle brukeren hvor lenken gÄr. UnngÄ vage ord som bare «Tilbake», skriv heller «Tilbake til oversikten» eller noe annet passende.
Fokus og tastaturnavigasjon
Brukeren skal kunne navigere til breadcrumbs med Tab, og aktivere den med Enter. Komponenten har synlig fokusindikator nÄr den er aktiv.
Ikke erstatt hovednavigasjonen
Ikke bruk breadcrumbs som eneste mÄte Ä navigere tilbake pÄ. Den skal vÊre et hjelpetillegg, ikke erstatte hovedmenyen.
Les mer om universell utforming av breadcrumbs:
Hvordan lenketekst skal gi mening uten Ă„ vĂŠre avhengig av konteksten.
Semantikk, lesbarhet og teknisk tilrettelegging i lenker og knapper.
Anatomi
| Element | Beskrivelse |
|---|---|
| 1. Lenke | Viser hvert nivÄ i hierarkiet. Hver lenke tar brukeren til det tilhÞrende nivÄet |
| 2. Ikon | Ikon mellom hvert nivÄ. Brukes for Ä skille nivÄene |
| 3. Aktivt nivÄ | Viser gjeldende side. Den siste lenken i breadcrumbs-stien er ikke klikkbar |
Implementasjon i kode
Breadcrumbs er tilgjengelig som bÄde React-komponent og web component (Elements). Komponenten bÞr bare brukes med maks 4 lenker.
React: custom lenkekomponent
I React kan du injisere din egen lenkekomponent med renderLink-proppen. Dette er nyttig for routing-lĂžsninger som Next.js Link, Tanstack Router Link, eller lignende.
<PktBreadcrumbs
breadcrumbs={crumbs}
renderLink={({ href, className, children }) => (
<CustomLink to={href} className={className}>
{children}
</CustomLink>
)}
/>Elements: navigate-event for SPA-ruting
I Elements/HTML brukes navigate-eventet for Ä fange opp klikk pÄ brÞdsmuler. Kall preventDefault() for Ä hindre vanlig navigasjon og hÄndter rutingen selv.
<pkt-breadcrumbs id="crumbs"></pkt-breadcrumbs>
<script>
const el = document.querySelector('#crumbs')
el.breadcrumbs = [
{ text: 'Hjem', href: '/' },
{ text: 'Tjenester', href: '/tjenester' },
{ text: 'Denne siden', href: '/tjenester/denne' },
]
el.addEventListener('navigate', (e) => {
e.preventDefault()
minRouter.push(e.detail.item.href)
})
</script>Uten en navigate-lytter fungerer lenkene som vanlige <a>-elementer med full sidenavigasjon.
Hvordan ta komponenten i bruk?
import @oslokommune/punkt-elements/dist/pkt-breadcrumbs.js; import { PktBreadcrumbs } from '@oslokommune/punkt-react'; <script src="https://punkt-cdn.oslo.kommune.no/16/elements/pkt-breadcrumbs.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-breadcrumbs"); Dersom du bruker verktÞyene i punkt-testing-utils sÄ kan dette bli gjort automatisk for deg.
Props
| Prop | Type | Beskrivelse |
|---|---|---|
breadcrumbs | array | Liste over brĂždsmuler |
navigationType | routeranchor | Hvordan skal brĂždsmulene navigeres? |
renderLink | function | En funksjon som lar deg erstatte intern lenkekomponent med en ekstern komponent (f.eks. Next.js Link, Tanstack Router Link). NÄr denne er satt, vil navigationType automatisk vÊre 'router'. |