Breadcrumbs show the user's location within a site hierarchy. The component uses native <nav> with aria-label for accessibility.
Basic usage
<nav class="breadcrumb" aria-label="Breadcrumb">
<a href="/">Home</a>
<span class="breadcrumb-separator" aria-hidden="true">/</span>
<a href="/design-system/">Design System</a>
<span class="breadcrumb-separator" aria-hidden="true">/</span>
<span aria-current="page">Breadcrumb</span>
</nav>
Structure
| Element | Role |
|---|---|
<nav class="breadcrumb"> |
Container with aria-label="Breadcrumb" |
<a href="..."> |
Navigable ancestor pages |
<span class="breadcrumb-separator"> |
Visual separator with aria-hidden="true" |
<span aria-current="page"> |
Current page (not a link) |
Multi-level example
Breadcrumbs support any depth. The last item uses aria-current="page" and is rendered as a <span> (not a link) to indicate the current location.
<nav class="breadcrumb" aria-label="Breadcrumb">
<a href="/">Home</a>
<span class="breadcrumb-separator" aria-hidden="true">/</span>
<a href="/design-system/">Design System</a>
<span class="breadcrumb-separator" aria-hidden="true">/</span>
<a href="/design-system/content/">Content</a>
<span class="breadcrumb-separator" aria-hidden="true">/</span>
<span aria-current="page">Breadcrumb</span>
</nav>
The aria-current="page" attribute signals to assistive technology that this is the current page. It also receives distinct styling — primary text colour and medium font weight — so sighted users can identify the active page at a glance.
Accessibility
- Always wrap in a
<nav>element witharia-label="Breadcrumb" - The current page uses
aria-current="page"and is not a link - Separators use
aria-hidden="true"so screen readers skip them - Links are focusable with standard keyboard navigation
Usage rules
Do:
- Use breadcrumbs on pages with clear hierarchical structure
- Mark the current page with
aria-current="page"
Don't:
- Don't use breadcrumbs on single-level pages (e.g. homepage)
- Don't make the current page a clickable link
CSS reference
This section documents how the component is built. For usage, see the sections above.
Styling
| Property | Value |
|---|---|
| Display | flex |
| Align items | center |
| Flex wrap | wrap |
| Gap | |
| Font size | |
| Color |
Selectors
| Selector | Purpose |
|---|---|
| Base container — flex row with wrapping | |
.breadcrumb a |
Ancestor links — faded colour, underline on hover |
.breadcrumb a:hover |
Hover state — with underline |
Visual separator — faded colour, user-select: none |
|
.breadcrumb [aria-current="page"] |
Current page — , medium weight |