Breadcrumbs
Use breadcrumbs to help users understand where they are in the website.
<nav class="hs2-breadcrumb" aria-label="Breadcrumb">
<div class="hs2-width-container">
<ol class="hs2-breadcrumb__list">
<li class="hs2-breadcrumb__item"><a class="hs2-breadcrumb__link" href="/level-one">Level one</a></li>
<li class="hs2-breadcrumb__item"><a class="hs2-breadcrumb__link" href="/level-one/level-two">Level two</a></li>
<li class="hs2-breadcrumb__item"><a class="hs2-breadcrumb__link" href="/level-one/level-two/level-three">Level three</a></li>
</ol>
<p class="hs2-breadcrumb__back"><a class="hs2-breadcrumb__backlink" href="/level-one/level-two/level-three">Back to Level three</a></p>
</div>
</nav>
Nunjucks macro options
Use options to customise the appearance, content and behaviour of a component when using a macro, for example, changing the text.
Some options are required for the macro to work; these are marked as "Required" in the option description.
If you're using Nunjucks macros in production with "html" options, or ones ending with "html", you must sanitise the HTML to protect against cross-site scripting exploits.
Name | Type | Required | Description |
---|---|---|---|
Name items | Type array | Required true | Description Array of breadcrumbs item objects. |
Name items[].text | Type string | Required true | Description Text to use within the breadcrumbs item. |
Name items[].href | Type string | Required false | Description The value of the breadcrumb item link href attribute. |
Name items[].attributes | Type object | Required false | Description HTML attributes (for example data attributes) to add to the individual crumb. |
Name text | Type string | Required true | Description Text to use for the current page. |
Name href | Type string | Required true | Description The value of the current page link href attribute. |
Name classes | Type string | Required false | Description Classes to add to the container. |
Name attributes | Type object | Required false | Description HTML attributes (for example data attributes) to add to the container. |
{% from 'breadcrumb/macro.njk' import breadcrumb %}
{{ breadcrumb({
items: [
{
href: "/level-one",
text: "Level one"
},
{
href: "/level-one/level-two",
text: "Level two"
}
],
href: "/level-one/level-two/level-three",
text: "Level three"
}) }}
When to use breadcrumbs
Use breadcrumbs to give users context and let them move back or up a level if they can't find what they want on the page.
When not to use breadcrumbs
Don’t use breadcrumbs in transactional journeys as they can get in the way of the user completing the task.
How to use breadcrumbs
If the full breadcrumb trail doesn't fit the screen size, it can wrap onto 2 lines, but don't break a breadcrumb if it doesn't fit the line.
You don't need to show the current page in the breadcrumb because this information is in the H1.
On mobile, we replace the full breadcrumb trail with a "Back to [parent]" link.
Accessibility
We use aria-label="breadcrumb"
as a label in the nav element to let people who use screen readers know what it is.
We add aria-hidden="true"
to the svg icons to hide them from people who use screen readers.