28 / 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 Ribbon-Style Chevron Breadcrumb Trail
The paper-ribbon banner: warm overlapping chevrons with a shadowed crease where each segment folds behind the next. The fold is one directional inset shadow, and the stacking order is four z- utilities — the part the CSS version needed four nth-child rules for.
Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time
Untitled UI React · Affiliate link
The code
<section class="tbc-28 w-full min-h-svh flex items-center justify-center bg-tbc28-bg font-tbc28-sans px-7 py-7 [--tbc28-depth:18px]">
<nav aria-label="Breadcrumb">
<ol class="flex list-none m-0 p-0">
<li class="relative z-4 flex"><a href="#" class="flex items-center h-10.5 pl-5.5 pr-5 text-[13.5px] font-bold text-white no-underline bg-tbc28-step1 [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Home</a></li>
<li class="relative z-3 flex"><a href="#" class="flex items-center h-10.5 pl-7.5 pr-5 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline bg-tbc28-step2 shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%,var(--tbc28-depth)_50%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Shop</a></li>
<li class="relative z-2 flex"><a href="#" class="flex items-center h-10.5 pl-7.5 pr-5 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline bg-tbc28-step3 shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%,var(--tbc28-depth)_50%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Toys</a></li>
<li class="relative z-1 flex"><a href="#" aria-current="page" class="flex items-center h-10.5 pl-7.5 pr-6 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline cursor-default bg-tbc28-current shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,100%_0,100%_100%,0_100%,var(--tbc28-depth)_50%)] focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white]">Building Blocks</a></li>
</ol>
</nav>
</section><section class="tbc-28 w-full min-h-svh flex items-center justify-center bg-tbc28-bg font-tbc28-sans px-7 py-7 [--tbc28-depth:18px]">
<nav aria-label="Breadcrumb">
<ol class="flex list-none m-0 p-0">
<li class="relative z-4 flex"><a href="#" class="flex items-center h-10.5 pl-5.5 pr-5 text-[13.5px] font-bold text-white no-underline bg-tbc28-step1 [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Home</a></li>
<li class="relative z-3 flex"><a href="#" class="flex items-center h-10.5 pl-7.5 pr-5 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline bg-tbc28-step2 shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%,var(--tbc28-depth)_50%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Shop</a></li>
<li class="relative z-2 flex"><a href="#" class="flex items-center h-10.5 pl-7.5 pr-5 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline bg-tbc28-step3 shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%,var(--tbc28-depth)_50%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Toys</a></li>
<li class="relative z-1 flex"><a href="#" aria-current="page" class="flex items-center h-10.5 pl-7.5 pr-6 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline cursor-default bg-tbc28-current shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,100%_0,100%_100%,0_100%,var(--tbc28-depth)_50%)] focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white]">Building Blocks</a></li>
</ol>
</nav>
</section>@import "tailwindcss";
@theme {
--color-tbc28-bg: #f7f0e4;
--color-tbc28-bg: oklch(0.96 0.02 60);
--color-tbc28-step1: #b85a2a;
--color-tbc28-step1: oklch(0.55 0.15 40);
--color-tbc28-step2: #bf5433;
--color-tbc28-step2: oklch(0.56 0.16 30);
--color-tbc28-step3: #c24e38;
--color-tbc28-step3: oklch(0.57 0.17 22);
--color-tbc28-current: #b03a63;
--color-tbc28-current: oklch(0.52 0.18 350);
--font-tbc28-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-28 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tbc28-bg: #f7f0e4;
--color-tbc28-bg: oklch(0.96 0.02 60);
--color-tbc28-step1: #b85a2a;
--color-tbc28-step1: oklch(0.55 0.15 40);
--color-tbc28-step2: #bf5433;
--color-tbc28-step2: oklch(0.56 0.16 30);
--color-tbc28-step3: #c24e38;
--color-tbc28-step3: oklch(0.57 0.17 22);
--color-tbc28-current: #b03a63;
--color-tbc28-current: oklch(0.52 0.18 350);
--font-tbc28-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-28 {
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-tbc28-bg: #f7f0e4;
--color-tbc28-bg: oklch(0.96 0.02 60);
--color-tbc28-step1: #b85a2a;
--color-tbc28-step1: oklch(0.55 0.15 40);
--color-tbc28-step2: #bf5433;
--color-tbc28-step2: oklch(0.56 0.16 30);
--color-tbc28-step3: #c24e38;
--color-tbc28-step3: oklch(0.57 0.17 22);
--color-tbc28-current: #b03a63;
--color-tbc28-current: oklch(0.52 0.18 350);
--font-tbc28-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-28 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tbc28-bg: #f7f0e4;
--color-tbc28-bg: oklch(0.96 0.02 60);
--color-tbc28-step1: #b85a2a;
--color-tbc28-step1: oklch(0.55 0.15 40);
--color-tbc28-step2: #bf5433;
--color-tbc28-step2: oklch(0.56 0.16 30);
--color-tbc28-step3: #c24e38;
--color-tbc28-step3: oklch(0.57 0.17 22);
--color-tbc28-current: #b03a63;
--color-tbc28-current: oklch(0.52 0.18 350);
--font-tbc28-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-28 {
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.
- Four
li:nth-child(n){z-index}rules become fourz-utilities in trail order. A fifth ribbon segment is a copied line, not a new selector — and the stacking intent is visible where it matters. - The crease shadow and the focus ring deliberately occupy the same property: while focused the ring replaces the fold, which keeps the indicator unambiguous on a clipped shape.
- UI change from the CSS original: the whole ramp was darkened by roughly 0.12 lightness. The original's bright oranges carried bold white text at about 2.4:1 — the prettiest contrast failure in the source collection.
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 Ribbon-Style Chevron Breadcrumb Trail
Source: https://codefronts.com/navigation/tailwind-css-breadcrumbs/tailwind-ribbon-style-chevron-breadcrumb-trail/
The paper-ribbon banner: warm overlapping chevrons with a shadowed crease where each segment folds behind the next. The fold is one directional inset shadow, and the stacking order is four z- utilities — the part the CSS version needed four nth-child rules for.
## HTML
```html
<section class="tbc-28 w-full min-h-svh flex items-center justify-center bg-tbc28-bg font-tbc28-sans px-7 py-7 [--tbc28-depth:18px]">
<nav aria-label="Breadcrumb">
<ol class="flex list-none m-0 p-0">
<li class="relative z-4 flex"><a href="#" class="flex items-center h-10.5 pl-5.5 pr-5 text-[13.5px] font-bold text-white no-underline bg-tbc28-step1 [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Home</a></li>
<li class="relative z-3 flex"><a href="#" class="flex items-center h-10.5 pl-7.5 pr-5 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline bg-tbc28-step2 shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%,var(--tbc28-depth)_50%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Shop</a></li>
<li class="relative z-2 flex"><a href="#" class="flex items-center h-10.5 pl-7.5 pr-5 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline bg-tbc28-step3 shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%,var(--tbc28-depth)_50%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Toys</a></li>
<li class="relative z-1 flex"><a href="#" aria-current="page" class="flex items-center h-10.5 pl-7.5 pr-6 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline cursor-default bg-tbc28-current shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,100%_0,100%_100%,0_100%,var(--tbc28-depth)_50%)] focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white]">Building Blocks</a></li>
</ol>
</nav>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tbc28-bg: #f7f0e4;
--color-tbc28-bg: oklch(0.96 0.02 60);
--color-tbc28-step1: #b85a2a;
--color-tbc28-step1: oklch(0.55 0.15 40);
--color-tbc28-step2: #bf5433;
--color-tbc28-step2: oklch(0.56 0.16 30);
--color-tbc28-step3: #c24e38;
--color-tbc28-step3: oklch(0.57 0.17 22);
--color-tbc28-current: #b03a63;
--color-tbc28-current: oklch(0.52 0.18 350);
--font-tbc28-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-28 {
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 Ribbon-Style Chevron Breadcrumb Trail
Source: https://codefronts.com/navigation/tailwind-css-breadcrumbs/tailwind-ribbon-style-chevron-breadcrumb-trail/
The paper-ribbon banner: warm overlapping chevrons with a shadowed crease where each segment folds behind the next. The fold is one directional inset shadow, and the stacking order is four z- utilities — the part the CSS version needed four nth-child rules for.
## HTML
```html
<section class="tbc-28 w-full min-h-svh flex items-center justify-center bg-tbc28-bg font-tbc28-sans px-7 py-7 [--tbc28-depth:18px]">
<nav aria-label="Breadcrumb">
<ol class="flex list-none m-0 p-0">
<li class="relative z-4 flex"><a href="#" class="flex items-center h-10.5 pl-5.5 pr-5 text-[13.5px] font-bold text-white no-underline bg-tbc28-step1 [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Home</a></li>
<li class="relative z-3 flex"><a href="#" class="flex items-center h-10.5 pl-7.5 pr-5 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline bg-tbc28-step2 shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%,var(--tbc28-depth)_50%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Shop</a></li>
<li class="relative z-2 flex"><a href="#" class="flex items-center h-10.5 pl-7.5 pr-5 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline bg-tbc28-step3 shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,calc(100%-var(--tbc28-depth))_0,100%_50%,calc(100%-var(--tbc28-depth))_100%,0_100%,var(--tbc28-depth)_50%)] transition-[filter] duration-200 hover:brightness-108 focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white] motion-reduce:transition-none">Toys</a></li>
<li class="relative z-1 flex"><a href="#" aria-current="page" class="flex items-center h-10.5 pl-7.5 pr-6 -ms-[var(--tbc28-depth)] text-[13.5px] font-bold text-white no-underline cursor-default bg-tbc28-current shadow-[inset_14px_0_14px_-12px_oklch(0_0_0/0.35)] [clip-path:polygon(0_0,100%_0,100%_100%,0_100%,var(--tbc28-depth)_50%)] focus-visible:outline-none focus-visible:shadow-[inset_0_0_0_2.5px_white]">Building Blocks</a></li>
</ol>
</nav>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tbc28-bg: #f7f0e4;
--color-tbc28-bg: oklch(0.96 0.02 60);
--color-tbc28-step1: #b85a2a;
--color-tbc28-step1: oklch(0.55 0.15 40);
--color-tbc28-step2: #bf5433;
--color-tbc28-step2: oklch(0.56 0.16 30);
--color-tbc28-step3: #c24e38;
--color-tbc28-step3: oklch(0.57 0.17 22);
--color-tbc28-current: #b03a63;
--color-tbc28-current: oklch(0.52 0.18 350);
--font-tbc28-sans: 'Space Grotesk', system-ui, sans-serif;
}
.tbc-28 {
width: 100%;
min-height: 100svh;
}
```How this works
Stacking is the ribbon. Without descending z-index, each segment's point would be hidden behind its neighbour and the fold would disappear. Four utilities, in trail order, on the four <li>s — visible, and trivially extendable.
The crease is directional. A 14px inset shadow, spread −12px, on the left edge only, darkens exactly the strip where the ribbon tucks under. It is the detail that makes the trail read as paper rather than as arrows.
Warm ramp, bold type. font-bold at 13.5px with white ink on saturated oranges — the ramp tokens are all at or below oklch(0.62) lightness so that holds at AA.
Make it yours
- Fold depth:
--tbc28-depthfeeding the polygons and overlaps. - Crease strength: the shadow's alpha; drop to 0.2 for a softer fold.
- Palette: the four ramp tokens — a cool ramp reads corporate, this warm one reads playful.
Gotchas — read before shipping
- Get the
z-order backwards and the ribbon inverts into a set of notched tabs. Trail order is descending, always. - Focus cannot use
outlinehere for the same reason as every clipped trail; the inset ring replaces the crease shadow while focused, which is intentional. - Bold white on saturated warm fills is the contrast risk — check any new ramp colour before shipping.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 111+ | 16.4+ | 128+ | 111+ |
Polygon clip-path and inset shadows are Baseline; the floor is Tailwind v4's own generated sheet.