Breadcrumbs

Vue Bootstrap 5 Breadcrumb component

Indicate the current page’s location within a navigational hierarchy that automatically adds separators via CSS.


Basic example

<template>
  <nav aria-label="breadcrumb">
    <MDBBreadcrumb>
      <MDBBreadcrumbItem active>Home</MDBBreadcrumbItem>
    </MDBBreadcrumb>
  </nav>
  <nav aria-label="breadcrumb">
    <MDBBreadcrumb>
      <MDBBreadcrumbItem><a href="#">Home</a></MDBBreadcrumbItem>
      <MDBBreadcrumbItem active>
        Library
      </MDBBreadcrumbItem>
    </MDBBreadcrumb>
  </nav>
  <nav aria-label="breadcrumb">
    <MDBBreadcrumb>
      <MDBBreadcrumbItem><a href="#">Home</a></MDBBreadcrumbItem>
      <MDBBreadcrumbItem><a href="#">Library</a></MDBBreadcrumbItem>
      <MDBBreadcrumbItem active>Data</MDBBreadcrumbItem>
    </MDBBreadcrumb>
  </nav>
</template>
<script>
  import { MDBBreadcrumb, MDBBreadcrumbItem } from 'mdb-vue-ui-kit';

  export default {
    components: {
     MDBBreadcrumb,
     MDBBreadcrumbItem
    },
  };
</script>
<script setup lang="ts">
  import { MDBBreadcrumb, MDBBreadcrumbItem } from 'mdb-vue-ui-kit';
</script>

Breadcrumb in navbar

Very often breadcrumb is placed in the navbar.

<template>
  <MDBNavbar expand="lg" light bg="light" container>
    <nav aria-label="breadcrumb">
      <MDBBreadcrumb>
        <MDBBreadcrumbItem><a href="#">Home</a></MDBBreadcrumbItem>
        <MDBBreadcrumbItem><a href="#">Library</a></MDBBreadcrumbItem>
        <MDBBreadcrumbItem active>
          <a href="#">Data</a>
        </MDBBreadcrumbItem>
      </MDBBreadcrumb>
    </nav>
  </MDBNavbar>
</template>
<script>
  import { MDBNavbar, MDBBreadcrumb, MDBBreadcrumbItem } from 'mdb-vue-ui-kit';

  export default {
    components: {
      MDBNavbar,
      MDBBreadcrumb,
      MDBBreadcrumbItem,
    },
  };
</script>
<script setup lang="ts">
  import { MDBNavbar, MDBBreadcrumb, MDBBreadcrumbItem } from 'mdb-vue-ui-kit';
</script>

Breadcrumb in header

If there is not enough space in navbar, consider placing breadcrumbs in a composition like this below.

<template>
  <MDBNavbar expand="lg" light bg="light" container>
    <MDBRow class="g-3 ms-3 align-items-center">
      <MDBInput
        id="navbarSupportedContent"
        wrapperClass="col-auto"
        label='Search (ctrl + "/" to focus)'
      />
      <MDBCol auto>
        <a class="ms-3" href="#!" role="button" style="color: #616161">
          <MDBIcon icon="search"></MDBIcon>
        </a>
      </MDBCol>
    </MDBRow>
    <MDBRow align-items-start bg-light mb-3>
      <MDBCol>
        <MDBIcon icon="bell" />
        <MDBBadge notification color="danger" pill>1</MDBBadge>
      </MDBCol>
      <MDBCol class="ps-1 pe-1">
        <MDBIcon class="flag flag-united-kingdom" />
      </MDBCol>
      <MDBCol class="ps-1 pe-1">
        <img
          src="https://mdbootstrap.com/img/Photos/Avatars/img (31).jpg"
          class="rounded-circle"
          height="22"
          alt=""
          loading="lazy"
        />
      </MDBCol>
    </MDBRow>
  </MDBNavbar>
  <MDBContainer class="p-5 bg-light mb-4">
    <h1>Dashboard</h1>
    <nav aria-label="breadcrumb" class="d-flex">
      <MDBBreadcrumb>
        <MDBBreadcrumbItem>
          <a class="text-reset" href="#">Home</a>
        </MDBBreadcrumbItem>
        <MDBBreadcrumbItem>
          <a class="text-reset" href="#">Library</a>
        </MDBBreadcrumbItem>
        <MDBBreadcrumbItem active>
          <a class="text-reset" href="#"><u>Dashboard</u></a>
        </MDBBreadcrumbItem>
      </MDBBreadcrumb>
    </nav>
  </MDBContainer>
</template>
<script>
  import { MDBNavbar, MDBBreadcrumb, MDBBreadcrumbItem,
    MDBContainer, MDBRow, MDBInput, MDBCol, MDBIcon, MDBBadge } from 'mdb-vue-ui-kit';

    export default {
      components: {
        MDBNavbar,
        MDBBreadcrumb,
        MDBBreadcrumbItem,
        MDBContainer,
        MDBRow,
        MDBInput,
        MDBCol,
        MDBIcon,
        MDBBadge,
      },
    };
</script>
<script setup lang="ts">
  import {
    MDBNavbar,
    MDBBreadcrumb,
    MDBBreadcrumbItem,
    MDBContainer,
    MDBRow,
    MDBInput,
    MDBCol,
    MDBIcon,
    MDBBadge,
  } from 'mdb-vue-ui-kit';
</script>

Changing the separator

Separators are automatically added in CSS through ::before and content>. They can be changed by changing $breadcrumb-divider, or through the $breadcrumb-divider Sass variable — and $breadcrumb-divider-flipped for its RTL counterpart, if needed. We default to our Sass varibale, which is set as a fallback to the custom property. This way, you get a global divider that you can override without recompiling CSS at any time.

<template>
  <MDBNavbar expand="lg" light bg="light" container>
    <nav aria-label="breadcrumb" style="--mdb-breadcrumb-divider: '>'">
      <MDBBreadcrumb>
        <MDBBreadcrumbItem><a href="#">Home</a></MDBBreadcrumbItem>
        <MDBBreadcrumbItem active> Library </MDBBreadcrumbItem>
      </MDBBreadcrumb>
    </nav>
  </MDBNavbar>
</template>
<script>
  import { MDBNavbar, MDBBreadcrumb, MDBBreadcrumbItem } from 'mdb-vue-ui-kit';

  export default {
    components: {
      MDBNavbar,
      MDBBreadcrumb,
      MDBBreadcrumbItem,
    },
  };
</script>
<script setup lang="ts">
  import { MDBNavbar, MDBBreadcrumb, MDBBreadcrumbItem } from 'mdb-vue-ui-kit';
</script>

When modifying via Sass, the quote function is needed to generate the quotes around a string, so if you want > as separator, you can use this:

$breadcrumb-divider: quote(">");

It’s also possible to use an embedded SVG icon:

<template>
  <MDBNavbar expand="lg" light bg="light" container>
    <nav
      aria-label="breadcrumb"
      style="--mdb-breadcrumb-divider: url(&#34;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z' fill='currentColor'/%3E%3C/svg%3E&#34;);"
    >
      <MDBBreadcrumb>
        <MDBBreadcrumbItem><a href="#">Home</a></MDBBreadcrumbItem>
        <MDBBreadcrumbItem active>
          Library
        </MDBBreadcrumbItem>
      </MDBBreadcrumb>
    </nav>
  </MDBNavbar>
</template>
<script>
  import { MDBNavbar, MDBBreadcrumb, MDBBreadcrumbItem  } from 'mdb-vue-ui-kit';

  export default {
    components: {
      MDBNavbar,
      MDBBreadcrumb,
      MDBBreadcrumbItem
    },
  };
</script>
<script setup lang="ts">
  import { MDBNavbar, MDBBreadcrumb, MDBBreadcrumbItem } from 'mdb-vue-ui-kit';
</script>

The separator can be removed by setting --mdb-breadcrumb-divider: ''; (empty strings in CSS custom properties counts as a value), or setting the Sass variable to $breadcrumb-divider to none:

<template>
  <MDBNavbar expand="lg" light bg="light" container>
    <nav aria-label="breadcrumb" style="--mdb-breadcrumb-divider: ''">
      <MDBBreadcrumb>
        <MDBBreadcrumbItem><a href="#">Home</a></MDBBreadcrumbItem>
        <MDBBreadcrumbItem active>
          Library
        </MDBBreadcrumbItem>
      </MDBBreadcrumb>
    </nav>
  </MDBNavbar>
</template>
<script>
  import { MDBNavbar, MDBBreadcrumb, MDBBreadcrumbItem  } from 'mdb-vue-ui-kit';

  export default {
    components: {
      MDBNavbar,
      MDBBreadcrumb,
      MDBBreadcrumbItem
    },
  };
</script>
<script setup lang="ts">
  import { MDBNavbar, MDBBreadcrumb, MDBBreadcrumbItem } from 'mdb-vue-ui-kit';
</script>
$breadcrumb-divider: none;

Accessibility

Since breadcrumbs provide a navigation, it’s a good idea to add a meaningful label such as aria-label="breadcrumb" to describe the type of navigation provided in the <nav> element, as well as applying an aria-current="page" to the last item of the set to indicate that it represents the current page.

For more information, see the WAI-ARIA Authoring Practices for the breadcrumb pattern.


Breadcrumbs - API


Import

<script>
  import {
    MDBBreadcrumb,
    MDBBreadcrumbItem
  } from 'mdb-vue-ui-kit';
</script>

Properties

MDBBreadcrumb

Name Type Default Description Example
tag String 'nav' Defines tag of the MDBBreadcrumb element <MDBBreadcrumb tag="section" />

MDBBreadcrumbItem

Name Type Default Description Example
tag String 'li' Defines tag of the MDBBreadcrumbItem element <MDBBreadcrumbItem tag="div" />
active Boolean false Add active class to element and aria-current="page" <MDBBreadcrumbItem active />
current String 'page' Change aria-current to element if active class is selected to true. Use ('page' | 'step' | 'location'). <MDBBreadcrumbItem active current="location" />

CSS variables

As part of MDB’s evolving CSS variables approach, breadcrumb now uses local CSS variables on .breadcrumb for enhanced real-time customization. Values for the CSS variables are set via Sass, so Sass customization is still supported, too.

// .breadcrumb
--#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};
--#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y};
--#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom};
@include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size);
--#{$prefix}breadcrumb-bg: #{$breadcrumb-bg};
--#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius};
--#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color};
--#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x};
--#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color};

// .navbar
//.breadcrumb
--#{$prefix}breadcrumb-item-color: #{$breadcrumb-item-color};
--#{$prefix}breadcrumb-item-hover-color: #{$breadcrumb-item-hover-color};
--#{$prefix}breadcrumb-item-before-color: #{$breadcrumb-item-before-color};
--#{$prefix}breadcrumb-item-transition: #{$breadcrumb-item-transition};

SCSS variables

$breadcrumb-font-size: null;
$breadcrumb-padding-y: 0;
$breadcrumb-padding-x: 0;
$breadcrumb-item-padding-x: 0.5rem;
$breadcrumb-margin-bottom: 1rem;
$breadcrumb-bg: null;
$breadcrumb-divider-color: $gray-600;
$breadcrumb-active-color: $gray-600;
$breadcrumb-divider: quote('/');
$breadcrumb-divider-flipped: $breadcrumb-divider;
$breadcrumb-border-radius: null;

$breadcrumb-item-color: rgba(0, 0, 0, 0.55);
$breadcrumb-item-transition: color 0.15s ease-in-out;
$breadcrumb-item-hover-color: rgba(0, 0, 0, 0.7);
$breadcrumb-item-before-color: $breadcrumb-item-color;