Skip to content

Breadcrumbs

The Breadcrumbs component provides a navigation aid that helps users understand their current location within a website or application hierarchy. It creates a visual trail of links that allows users to navigate back to previous levels.

Basic Usage

html
<nav class="breadcrumbs" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Products</a></li>
    <li><a href="#" aria-current="page">Product Details</a></li>
  </ol>
</nav>

Variants

Size Variants

Breadcrumbs can be displayed in different sizes.

html
<nav class="breadcrumbs sm" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Category</a></li>
    <li><a href="#" aria-current="page">Page</a></li>
  </ol>
</nav>

<nav class="breadcrumbs" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Category</a></li>
    <li><a href="#" aria-current="page">Page</a></li>
  </ol>
</nav>

<nav class="breadcrumbs lg" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Category</a></li>
    <li><a href="#" aria-current="page">Page</a></li>
  </ol>
</nav>

Style Variants

Different visual styles for breadcrumbs.

html
<nav class="breadcrumbs" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Category</a></li>
    <li><a href="#" aria-current="page">Page</a></li>
  </ol>
</nav>

<nav class="breadcrumbs outlined" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Category</a></li>
    <li><a href="#" aria-current="page">Page</a></li>
  </ol>
</nav>

<nav class="breadcrumbs pill" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Category</a></li>
    <li><a href="#" aria-current="page">Page</a></li>
  </ol>
</nav>

Separator Variants

Customize the separator between breadcrumb items.

html
<nav class="breadcrumbs separator-slash" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Category</a></li>
    <li><a href="#" aria-current="page">Page</a></li>
  </ol>
</nav>

<nav class="breadcrumbs separator-arrow" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Category</a></li>
    <li><a href="#" aria-current="page">Page</a></li>
  </ol>
</nav>

<nav class="breadcrumbs separator-dot" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Category</a></li>
    <li><a href="#" aria-current="page">Page</a></li>
  </ol>
</nav>

Usage Examples

With Icons

Add icons to enhance visual cues in breadcrumbs.

html
<nav class="breadcrumbs" aria-label="Breadcrumb">
  <ol>
    <li>
      <a href="#">
        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
          <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>
          <polyline points="9 22 9 12 15 12 15 22"></polyline>
        </svg>
        <span>Home</span>
      </a>
    </li>
    <li>
      <a href="#">
        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
          <path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"></path>
          <line x1="3" y1="6" x2="21" y2="6"></line>
          <path d="M16 10a4 4 0 0 1-8 0"></path>
        </svg>
        <span>Products</span>
      </a>
    </li>
    <li>
      <a href="#" aria-current="page">
        <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
          <rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect>
          <rect x="9" y="9" width="6" height="6"></rect>
          <line x1="9" y1="1" x2="9" y2="4"></line>
          <line x1="15" y1="1" x2="15" y2="4"></line>
          <line x1="9" y1="20" x2="9" y2="23"></line>
          <line x1="15" y1="20" x2="15" y2="23"></line>
          <line x1="20" y1="9" x2="23" y2="9"></line>
          <line x1="20" y1="14" x2="23" y2="14"></line>
          <line x1="1" y1="9" x2="4" y2="9"></line>
          <line x1="1" y1="14" x2="4" y2="14"></line>
        </svg>
        <span>Product Details</span>
      </a>
    </li>
  </ol>
</nav>

Responsive Truncation

For long paths, breadcrumbs can be truncated on smaller screens.

html
<nav class="breadcrumbs truncate" aria-label="Breadcrumb">
  <ol>
    <li><a href="#">Home</a></li>
    <li><a href="#">Very Long Category Name That Might Get Truncated</a></li>
    <li><a href="#">Subcategory</a></li>
    <li><a href="#">Another Level</a></li>
    <li><a href="#" aria-current="page">Current Page with Long Title</a></li>
  </ol>
</nav>

Importing

css
/* Required dependencies */
@import '@casoon/ui-lib/core.css';
@import '@casoon/ui-lib/themes/day.css'; /* or another theme */

/* Component modules */
@import '@casoon/ui-lib/ui/components/breadcrumbs.css';

CSS Variables

The Breadcrumbs component can be customized using CSS variables:

css
:root {
  --breadcrumbs-font-size: 0.875rem;
  --breadcrumbs-font-weight: var(--font-weight-normal);
  --breadcrumbs-line-height: 1.5;
  --breadcrumbs-color: var(--color-text-secondary);
  --breadcrumbs-color-hover: var(--color-primary);
  --breadcrumbs-color-current: var(--color-text);
  --breadcrumbs-separator: "/";
  --breadcrumbs-separator-color: var(--color-border);
  --breadcrumbs-gap: 0.5rem;
  --breadcrumbs-padding: 0.5rem;
  --breadcrumbs-border-radius: var(--radius-md);
  --breadcrumbs-background: transparent;
  --breadcrumbs-border-color: var(--color-border);
  --breadcrumbs-border-width: 1px;
}

Available Variables

variableDefaultDescription
--breadcrumbs-font-size0.875remFont size of breadcrumb items
--breadcrumbs-font-weightvar(--font-weight-normal)Font weight of breadcrumb items
--breadcrumbs-line-height1.5Line height of breadcrumb items
--breadcrumbs-colorvar(--color-text-secondary)Text color of breadcrumb items
--breadcrumbs-color-hovervar(--color-primary)Text color on hover
--breadcrumbs-color-currentvar(--color-text)Text color of current page
--breadcrumbs-separator"/"Content of the separator
--breadcrumbs-separator-colorvar(--color-border)Color of the separator
--breadcrumbs-gap0.5remGap between breadcrumb items
--breadcrumbs-padding0.5remPadding around the breadcrumbs
--breadcrumbs-border-radiusvar(--radius-md)Border radius for outlined styles
--breadcrumbs-backgroundtransparentBackground color
--breadcrumbs-border-colorvar(--color-border)Border color for outlined styles
--breadcrumbs-border-width1pxBorder width for outlined styles

Accessibility

The Breadcrumbs component is built with accessibility in mind:

  • Semantic Structure: Uses <nav>, <ol>, and <li> elements to provide proper semantic structure
  • ARIA Attributes: aria-label="Breadcrumb" on the <nav> element identifies the breadcrumb role
  • Current Page: aria-current="page" on the current page link helps screen readers identify the current location
  • Focus Indicators: Clear visual indicators when links receive keyboard focus
  • Color Contrast: Sufficient contrast between text and background colors
  • Screen Reader Support: Separator characters are implemented in a way that screen readers can interpret correctly

Browser Compatibility

FeatureChromeFirefoxSafariEdgeIE
Basic functionality
CSS custom properties
Flexbox layout⚠️

Legend: ✅ Full support, ⚠️ Partial support, ❌ No support

Performance Considerations

  • Icon Usage: When using icons, consider the additional asset size and rendering performance
  • Long Paths: For deep hierarchies, consider using truncation or collapsing to improve performance on mobile devices
  • Text Wrapping: Ensure breadcrumbs handle text wrapping gracefully to prevent layout shifts
  • Responsive Design: Test breadcrumbs at various viewport widths to ensure they remain usable at all sizes
  • Navigation - For main site navigation
  • Pagination - For navigating between pages of content
  • Tabs - For switching between views within a page
  • Menu - For dropdown navigation options