39 Tailwind CSS Breadcrumbs
17 / 39

All 39 in 39 Tailwind CSS Breadcrumbs

  1. 01Tailwind Accessible Breadcrumb with Schema.org Microdata & ARIA
  2. 02Tailwind Responsive Collapsing Breadcrumb Bar with Container Queries
  3. 03Tailwind Adaptive Light & Dark Mode Breadcrumb Bar with Theme Tokens
  4. 04Tailwind E-Commerce Filter & Facet Breadcrumb with Removable Chips
  5. 05Tailwind Glassmorphism Floating Breadcrumb Pill with Shimmer Sweep
  6. 06Tailwind Neumorphic Soft UI Breadcrumb with Dual Box Shadows
  7. 07Tailwind Sticky Scroll-Shrink Breadcrumb Header with Scroll-Driven Animation
  8. 08Tailwind Material Design Flat Breadcrumb Bar with Ink Ripple
  9. 09Tailwind Isometric 3D Layered Breadcrumb with Extruded Tiles
  10. 10Tailwind Breadcrumb Bar with Built-In Dropdown Sibling Menus
  11. 11Tailwind Full-Width Block-Style Segmented Breadcrumb Bar
  12. 12Tailwind Accent-Colour Toggle Breadcrumb with Persisted Theme
  13. 13Tailwind Seamless Arrow-Cutout Breadcrumb Trail with clip-path
  14. 14Tailwind Compact Icon-Only Home Node Breadcrumb Bar
  15. 15Tailwind Segmented Rounded-Outline Pill Breadcrumb
  16. 16Tailwind Neumorphic Soft Inset-Shadow Breadcrumb Channel
  17. 17Tailwind CSS Grid Auto-Fitting Responsive Breadcrumb Trail
  18. 18Tailwind Holographic Shimmer Web3 Breadcrumb with Animated @property
  19. 19Tailwind SaaS Gradient-Text Breadcrumb Bar with Animated Clip
  20. 20Tailwind Marketplace Filter-Chip Breadcrumb with Icon Chips
  21. 21Tailwind Editorial Breadcrumb with Animated SVG Wave Underline
  22. 22Tailwind Developer Docs Breadcrumb with One-Click Path Copy
  23. 23Tailwind Modern Arrow Breadcrumb Bar using clip-path Polygons
  24. 24Tailwind Multi-Line Aligned Breadcrumb Layout with CSS Subgrid
  25. 25Tailwind Breadcrumb Links with Animated Underline Glow
  26. 26Tailwind Minimalist Breadcrumb with Swappable Masked SVG Separators
  27. 27Tailwind Multi-Step Checkout & Wizard Breadcrumb Indicator
  28. 28Tailwind Ribbon-Style Chevron Breadcrumb Trail
  29. 29Tailwind Pill-Shape Badge Breadcrumb Bar
  30. 30Tailwind Clean Line-Separator Minimalist Breadcrumbs
  31. 31Tailwind Gradient Background Glow Breadcrumb Bar
  32. 32Tailwind Floating Card Shadow Breadcrumb Navigation
  33. 33Tailwind Truncated Ellipsis Compact Mobile Breadcrumb
  34. 34Tailwind Inline Bullet-Dot Separator Breadcrumb
  35. 35Tailwind Skewed Parallelogram Breadcrumb Bar
  36. 36Tailwind Outline Border-Only Geometric Breadcrumbs
  37. 37Tailwind Circular Icon & Numbered Step Breadcrumbs
  38. 38Tailwind Frosted Glass Dark UI Breadcrumb Component
  39. 39Tailwind Micro-Interaction Animated Hover Breadcrumbs
Pure TailwindMIT licensed

Tailwind CSS Grid Auto-Fitting Responsive Breadcrumb Trail

A trail laid out on a grid instead of a flex row: crumbs flow into as many max-content columns as fit, then stack into full-width rows below the breakpoint — each crumb a small card that lifts 1px on hover. The port turns one media query into a max-sm: run on four elements.

Live Demo
Plain CSSTailwind v4
Try it

Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time

Untitled UI React · Affiliate link

Get Untitled UI Pro

The code

<section class="tbc-17 w-full min-h-svh grid place-items-center px-7 py-7 font-tbc17-sans bg-linear-[180deg,oklch(0.99_0.003_200),oklch(0.96_0.008_205)]">
  <nav aria-label="Breadcrumb" class="w-full max-w-[720px]">
    <ol class="grid justify-center items-center gap-x-1.5 gap-y-2 list-none m-0 p-0 max-w-full [grid-auto-flow:column] [grid-template-columns:repeat(auto-fit,minmax(max-content,auto))] max-sm:[grid-auto-flow:row] max-sm:grid-cols-1 max-sm:gap-1.5">
      <li class="inline-flex items-center gap-1.5 min-w-0 max-sm:w-full max-sm:justify-center"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Home</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Continents</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Europe</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Countries</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Portugal</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" aria-current="page" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-bold text-white no-underline bg-tbc17-acc border border-tbc17-acc focus-visible:outline-2 focus-visible:outline-tbc17-ink focus-visible:outline-offset-3 max-sm:w-full">Lisbon</a></li>
    </ol>
  </nav>
</section>
@import "tailwindcss";

@theme {
  --color-tbc17-edge: #e3e8ea;
  --color-tbc17-edge: oklch(0.92 0.008 205);
  --color-tbc17-ink: #2e3b40;
  --color-tbc17-ink: oklch(0.28 0.03 210);
  --color-tbc17-mut: #93a5aa;
  --color-tbc17-mut: oklch(0.68 0.04 205);
  --color-tbc17-acc: #10708f;
  --color-tbc17-acc: oklch(0.5 0.13 210);
  --font-tbc17-sans: 'Space Grotesk', system-ui, sans-serif;
}

.tbc-17 {
  width: 100%;
  min-height: 100svh;
}

Setup — do this once per project

Skip this if your project already runs Tailwind v4.

1Load Tailwind
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>

Compiles in the browser — perfect for a CodePen or a quick test, not for production.

2Add the stylesheetRequiredthe @theme block is what makes the custom utilities exist
@import "tailwindcss";

@theme {
  --color-tbc17-edge: #e3e8ea;
  --color-tbc17-edge: oklch(0.92 0.008 205);
  --color-tbc17-ink: #2e3b40;
  --color-tbc17-ink: oklch(0.28 0.03 210);
  --color-tbc17-mut: #93a5aa;
  --color-tbc17-mut: oklch(0.68 0.04 205);
  --color-tbc17-acc: #10708f;
  --color-tbc17-acc: oklch(0.5 0.13 210);
  --font-tbc17-sans: 'Space Grotesk', system-ui, sans-serif;
}

.tbc-17 {
  width: 100%;
  min-height: 100svh;
}
3Fonts used by this demooptional — skip if you have your own type stack
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&display=swap">

What changed in the port

Which parts became utilities, which stayed CSS, and why.

  • The @supports (grid-template-columns: subgrid) block from the original is dropped: it re-declared the same tracks, so it was a no-op. Porting is a good moment to delete rules that never did anything.
  • Both layout modes live on the list element, and the three max-sm: utilities on each crumb handle the rest — a nine-declaration media query becomes visible at the point of use.
  • UI change from the CSS original: the accent darkened to oklch(0.5 0.13 210) so white bold text on the current crumb clears AA, and stacked crumbs now centre their labels rather than stretching the text.
Paste this into ChatGPT, Claude, Cursor, or any coding assistant. The block below is pre-framed with everything the AI needs to integrate this demo into your project — markup, styles, scoping notes, and the source URL. Hit Copy and paste straight into your chat.
Here's a working CSS demo from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Tailwind CSS Grid Auto-Fitting Responsive Breadcrumb Trail
Source: https://codefronts.com/navigation/tailwind-css-breadcrumbs/tailwind-grid-auto-fitting-responsive-breadcrumb-trail/

A trail laid out on a grid instead of a flex row: crumbs flow into as many max-content columns as fit, then stack into full-width rows below the breakpoint &mdash; each crumb a small card that lifts 1px on hover. The port turns one media query into a max-sm: run on four elements.
## HTML
```html
<section class="tbc-17 w-full min-h-svh grid place-items-center px-7 py-7 font-tbc17-sans bg-linear-[180deg,oklch(0.99_0.003_200),oklch(0.96_0.008_205)]">
  <nav aria-label="Breadcrumb" class="w-full max-w-[720px]">
    <ol class="grid justify-center items-center gap-x-1.5 gap-y-2 list-none m-0 p-0 max-w-full [grid-auto-flow:column] [grid-template-columns:repeat(auto-fit,minmax(max-content,auto))] max-sm:[grid-auto-flow:row] max-sm:grid-cols-1 max-sm:gap-1.5">
      <li class="inline-flex items-center gap-1.5 min-w-0 max-sm:w-full max-sm:justify-center"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Home</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Continents</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Europe</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Countries</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-semibold text-tbc17-ink no-underline bg-white border border-tbc17-edge transition-[background-color,border-color,color,translate] duration-200 hover:text-tbc17-acc hover:border-[color-mix(in_oklab,var(--color-tbc17-acc)_40%,var(--color-tbc17-edge))] hover:bg-[color-mix(in_oklab,var(--color-tbc17-acc)_6%,white)] hover:-translate-y-px focus-visible:outline-2 focus-visible:outline-tbc17-acc focus-visible:outline-offset-3 max-sm:w-full motion-reduce:transition-none motion-reduce:hover:translate-y-0">Portugal</a></li>
      <li class="inline-flex items-center gap-1.5 min-w-0 before:content-['\203A'] before:text-sm before:font-semibold before:text-tbc17-mut before:shrink-0 max-sm:w-full max-sm:justify-center max-sm:before:hidden"><a href="#" aria-current="page" class="inline-flex items-center justify-center h-10 px-3 rounded-lg text-[13px] font-bold text-white no-underline bg-tbc17-acc border border-tbc17-acc focus-visible:outline-2 focus-visible:outline-tbc17-ink focus-visible:outline-offset-3 max-sm:w-full">Lisbon</a></li>
    </ol>
  </nav>
</section>
```
## CSS
```css
@import "tailwindcss";

@theme {
  --color-tbc17-edge: #e3e8ea;
  --color-tbc17-edge: oklch(0.92 0.008 205);
  --color-tbc17-ink: #2e3b40;
  --color-tbc17-ink: oklch(0.28 0.03 210);
  --color-tbc17-mut: #93a5aa;
  --color-tbc17-mut: oklch(0.68 0.04 205);
  --color-tbc17-acc: #10708f;
  --color-tbc17-acc: oklch(0.5 0.13 210);
  --font-tbc17-sans: 'Space Grotesk', system-ui, sans-serif;
}

.tbc-17 {
  width: 100%;
  min-height: 100svh;
}
```

How this works

Two layout modes, one element. The list carries its row-mode track definition and its stack-mode override together, so the responsive behaviour is legible without opening a stylesheet. The chevrons, the crumb widths and the link widths each carry their own max-sm: counterpart.

Why grid at all. A flex row wraps, but wrapped rows do not align: crumb 4 lands wherever crumb 3 ended. Grid tracks keep columns aligned across rows, which is what makes a deep trail scan cleanly at medium widths.

The lift is one pixel. hover:-translate-y-px with a 180ms transition — enough to read as interactive, small enough not to shift the line. motion-reduce: drops it and keeps the colour change.

Make it yours

  • Track minimum: swap minmax(max-content,auto) for minmax(120px,1fr) to force equal-width crumbs.
  • Stack breakpoint: max-sm: → max-md: for long labels.
  • Card look: bg-white border border-tbc17-edge rounded-lg; drop the border for a flatter trail.

Gotchas — read before shipping

  • grid-auto-flow:column with auto-fit tracks will not wrap on its own — the stacked mode is what handles narrow widths, so do not delete the max-sm: run.
  • Hiding the chevrons in stack mode is required, not cosmetic: a vertical list with &rsaquo; glyphs between rows reads as broken.
  • Translating a card on hover can clip its shadow against an overflow-hidden ancestor; the stage here has none.

Browser support

ChromeSafariFirefoxEdge
111+16.4+128+111+

Grid auto-fit and max-content tracks are Baseline; color-mix() is the modern gate and is v4's own floor.

Techniques used in this demo

Utilitiesfirst-class utility or variant

HTML & JSno Tailwind involved

Search CodeFronts

Loading…