17 / 39
All 39 in 39 Tailwind CSS Breadcrumbs
- 01Tailwind Accessible Breadcrumb with Schema.org Microdata & ARIA
- 02Tailwind Responsive Collapsing Breadcrumb Bar with Container Queries
- 03Tailwind Adaptive Light & Dark Mode Breadcrumb Bar with Theme Tokens
- 04Tailwind E-Commerce Filter & Facet Breadcrumb with Removable Chips
- 05Tailwind Glassmorphism Floating Breadcrumb Pill with Shimmer Sweep
- 06Tailwind Neumorphic Soft UI Breadcrumb with Dual Box Shadows
- 07Tailwind Sticky Scroll-Shrink Breadcrumb Header with Scroll-Driven Animation
- 08Tailwind Material Design Flat Breadcrumb Bar with Ink Ripple
- 09Tailwind Isometric 3D Layered Breadcrumb with Extruded Tiles
- 10Tailwind Breadcrumb Bar with Built-In Dropdown Sibling Menus
- 11Tailwind Full-Width Block-Style Segmented Breadcrumb Bar
- 12Tailwind Accent-Colour Toggle Breadcrumb with Persisted Theme
- 13Tailwind Seamless Arrow-Cutout Breadcrumb Trail with clip-path
- 14Tailwind Compact Icon-Only Home Node Breadcrumb Bar
- 15Tailwind Segmented Rounded-Outline Pill Breadcrumb
- 16Tailwind Neumorphic Soft Inset-Shadow Breadcrumb Channel
- 17Tailwind CSS Grid Auto-Fitting Responsive Breadcrumb Trail
- 18Tailwind Holographic Shimmer Web3 Breadcrumb with Animated @property
- 19Tailwind SaaS Gradient-Text Breadcrumb Bar with Animated Clip
- 20Tailwind Marketplace Filter-Chip Breadcrumb with Icon Chips
- 21Tailwind Editorial Breadcrumb with Animated SVG Wave Underline
- 22Tailwind Developer Docs Breadcrumb with One-Click Path Copy
- 23Tailwind Modern Arrow Breadcrumb Bar using clip-path Polygons
- 24Tailwind Multi-Line Aligned Breadcrumb Layout with CSS Subgrid
- 25Tailwind Breadcrumb Links with Animated Underline Glow
- 26Tailwind Minimalist Breadcrumb with Swappable Masked SVG Separators
- 27Tailwind Multi-Step Checkout & Wizard Breadcrumb Indicator
- 28Tailwind Ribbon-Style Chevron Breadcrumb Trail
- 29Tailwind Pill-Shape Badge Breadcrumb Bar
- 30Tailwind Clean Line-Separator Minimalist Breadcrumbs
- 31Tailwind Gradient Background Glow Breadcrumb Bar
- 32Tailwind Floating Card Shadow Breadcrumb Navigation
- 33Tailwind Truncated Ellipsis Compact Mobile Breadcrumb
- 34Tailwind Inline Bullet-Dot Separator Breadcrumb
- 35Tailwind Skewed Parallelogram Breadcrumb Bar
- 36Tailwind Outline Border-Only Geometric Breadcrumbs
- 37Tailwind Circular Icon & Numbered Step Breadcrumbs
- 38Tailwind Frosted Glass Dark UI Breadcrumb Component
- 39Tailwind Micro-Interaction Animated Hover Breadcrumbs
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.
Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time
Untitled UI React · Affiliate link
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><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;
}@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.
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
<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.
npm install tailwindcss @tailwindcss/vite
npm install tailwindcss @tailwindcss/vite// vite.config.js ("type": "module" in package.json)
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [tailwindcss()],
})// vite.config.js ("type": "module" in package.json)
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [tailwindcss()],
})Any v4 setup works — Vite, PostCSS or the CLI. Nothing in this demo is bundler-specific.
@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;
}@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;
}<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">
<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.
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 — 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;
}
```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 — 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)forminmax(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:columnwithauto-fittracks will not wrap on its own — the stacked mode is what handles narrow widths, so do not delete themax-sm:run.- Hiding the chevrons in stack mode is required, not cosmetic: a vertical list with
›glyphs between rows reads as broken. - Translating a card on hover can clip its shadow against an
overflow-hiddenancestor; the stage here has none.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 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.