39 CSS Breadcrumbs

39 hand-coded CSS breadcrumbs for SaaS admin dashboards, e-commerce filter pages, documentation sites, and editorial blogs: Schema.org BreadcrumbList Microdata + WCAG 2.2 accessible (Google Rich Results eligible), :has()-driven responsive collapse (Amazon Fashion mobile pattern), dark/light theme toggle with color-scheme + :has(input:checked), e-commerce filter chips with removable <button> facets (Shopify Dawn / Amazon / Etsy), Docusaurus-style sticky scroll-shrink header with animation-timeline: view(), Amazon-style dropdown sibling menus, Stripe/Vercel/Linear SaaS marketing gradient text, Airbnb filter chip navigation with container queries, editorial blog wave underline, developer docs path-copy (Clipboard API), and 30 more. Real <nav aria-label="Breadcrumb"> + <ol> semantics, aria-current="page", 44px hit targets. Scoped under .bc-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.

36 pure CSS3 light JSPublished 22 new designs · Updated on

Related15 CSS Navigation Menu Designs12 CSS Steppers32 CSS Tab Designs20 CSS Pagination

Accessible Breadcrumb Navigation with Schema.org Microdata & ARIA — preview
01 / 39Pure CSSNEW

Accessible Breadcrumb Navigation with Schema.org Microdata & ARIA

The reference-grade accessible, SEO-complete breadcrumb: full schema.org BreadcrumbList Microdata inline in the HTML so Google can render breadcrumb rich results, ARIA done correctly, aria-hidden pseudo-element separators screen readers skip, and a WCAG-AAA :focus-visible treatment. This is the one to ship on a real content site.

Published

Responsive Collapsing CSS Breadcrumb Bar using :has() Selector — preview
02 / 39Pure CSSNEW

Responsive Collapsing CSS Breadcrumb Bar using :has() Selector

A breadcrumb that truncates itself on narrow screens with ZERO JavaScript: intermediate crumbs collapse behind an ellipsis, and hovering or focusing the ellipsis expands them back with a smooth max-width tween. Container queries make it respond to its own column width, so it collapses in a narrow sidebar even on a wide screen.

Published

Adaptive Light & Dark Mode Breadcrumb Bar with CSS Custom Properties — preview
03 / 39Pure CSSNEW

Adaptive Light & Dark Mode Breadcrumb Bar with CSS Custom Properties

A breadcrumb whose entire skin flips between light and dark from one set of custom properties — respecting the OS via prefers-color-scheme AND allowing a manual [data-theme] override. Frosted-glass bar background for modern SaaS dashboards, and every colour is a token, so re-theming is a five-line edit.

Published

E-Commerce Filter & Attribute Breadcrumb Navigation Component — preview
04 / 39Pure CSSNEW

E-Commerce Filter & Attribute Breadcrumb Navigation Component

The Shopify/Magento-style faceted-filter trail: Home › Women › Shoes plus removable active-filter chips (Size 8, Under $120, In stock) each with a hover-scaling remove badge. Wraps gracefully on mobile with flex-wrap + gap, mixes navigation crumbs and filter tokens in one accessible bar.

Published

Modern Glassmorphism Floating Breadcrumb Bar UI Design — preview
05 / 39Pure CSSNEW

Modern Glassmorphism Floating Breadcrumb Bar UI Design

A frosted-glass breadcrumb pill floating over a colourful backdrop: heavy backdrop-filter blur + saturation, a light-catching gradient hairline border, and a shimmer sweep across the bar on hover. The premium 'floating UI' treatment for hero sections and creative landings — kept readable and keyboard-accessible.

Published

Neumorphic Soft UI Breadcrumb Navigation with Dual Box Shadows — preview
06 / 39Pure CSSNEW

Neumorphic Soft UI Breadcrumb Navigation with Dual Box Shadows

The soft-UI / neumorphism treatment: breadcrumb nodes appear extruded from a single-colour surface using two opposing box-shadows (a light source and a dark source), and the current crumb presses INWARD with inset shadows. The whole effect is one background colour plus shadow pairs — the defining neumorphic recipe.

Published

Sticky Top CSS Navigation Header with Shrinking Breadcrumb Trail — preview
07 / 39CSS + JSNEW

Sticky Top CSS Navigation Header with Shrinking Breadcrumb Trail

A sticky page header whose breadcrumb trail shrinks as you scroll — font size, padding and vertical footprint all contract into a compact bar that stays pinned to the top. Modern build uses CSS scroll-driven animation-timeline:scroll(); a tiny IntersectionObserver fallback ships for engines without it.

Published

Material Design Flat Breadcrumb Navigation Bar — preview
08 / 39Pure CSSNEW

Material Design Flat Breadcrumb Navigation Bar

A clean Material-Design breadcrumb: flat surface, Roboto-style type scale, and an ink-ripple hover cue that radiates from the pointer on each link — the tactile Material feedback recreated with a pure-CSS radial-gradient ripple, no JS ripple library.

Published

Isometric 3D Layered CSS Breadcrumb Navigation — preview
09 / 39Pure CSSNEW

Isometric 3D Layered CSS Breadcrumb Navigation

A breadcrumb tilted into isometric 3D: the whole trail sits on an angled plane via a rotateX/rotateZ transform, each crumb extruded with a stacked box-shadow 'side', so the path looks like physical tiles laid on a surface. A hover raises the tile toward the viewer — a striking showpiece built with pure CSS 3D transforms.

Published

Breadcrumb Bar with Built-In Dropdown Sibling Menus — preview
10 / 39Pure CSSNEW

Breadcrumb Bar with Built-In Dropdown Sibling Menus

A power-navigation breadcrumb where intermediate crumbs reveal a dropdown of sibling pages on hover AND focus — jump sideways to any peer section without going back up the tree. Built with the native &lt;details&gt;/&lt;summary&gt; disclosure so it's keyboard-accessible and JS-free, with a modern popover-style panel.

Published

Full-Width Block-Style Segmented CSS Breadcrumb Bar — preview
11 / 39Pure CSSNEW

Full-Width Block-Style Segmented CSS Breadcrumb Bar

An edge-to-edge breadcrumb where each hierarchy step is a distinct full-height coloured block, the segments filling the entire bar width with equal or content-sized tracks — the bold, blocky navigation banner for app headers and section dividers. Segments meet flush with a subtle bevel between them.

Published

CSS Custom-Property Accent-Color Toggle Breadcrumb — preview
12 / 39CSS + JSNEW

CSS Custom-Property Accent-Color Toggle Breadcrumb

A breadcrumb whose accent colour is a single custom property the user can switch live from a swatch row — hover, current, and focus all recolour instantly from one variable. Nine lines of JS persist the choice to localStorage so it survives reloads; the CSS is fully theme-agnostic.

Published

Seamless Arrow-Cutout CSS3 Breadcrumb Trail — preview
13 / 39Pure CSSNEW

Seamless Arrow-Cutout CSS3 Breadcrumb Trail

The interlocking-chevron breadcrumb built the classic CSS3 way — with ::before/::after triangles made from transparent-border tricks rather than clip-path. Each crumb's arrow is two rotated border-triangles that seamlessly notch into the next, the technique taught in every 'CSS arrow' tutorial, modernised.

Published

Compact Icon-Only Home Node CSS Breadcrumb Bar — preview
14 / 39Pure CSSNEW

Compact Icon-Only Home Node CSS Breadcrumb Bar

A space-saving breadcrumb that replaces the word 'Home' with an accessible house icon while keeping the full text for screen readers — the compact convention seen across modern apps. Demonstrates the correct visually-hidden pattern so the icon-only node never loses its accessible name.

Published

Segmented Rounded-Outline Pill CSS Breadcrumb — preview
15 / 39Pure CSSNEW

Segmented Rounded-Outline Pill CSS Breadcrumb

A refined outline-only pill breadcrumb: each crumb is framed in a thin rounded border with no fill, so the trail reads as a row of elegant capsule outlines. Hover fills the pill softly; the current crumb becomes a solid accent capsule. The understated, high-craft treatment for premium product UIs.

Published

Neumorphic Soft Inset-Shadow CSS Breadcrumbs — preview
16 / 39Pure CSSNEW

Neumorphic Soft Inset-Shadow CSS Breadcrumbs

A neumorphic breadcrumb where the whole trail sits in a soft pressed 'channel' carved into the surface, and each crumb is a subtle inset well — the tactile soft-UI treatment focused on inset shadows (the counterpart to demo 10's extruded nodes). The current crumb rises as the one raised node in the groove.

Published

CSS Grid Auto-Fitting Responsive Breadcrumb Trail — preview
17 / 39Pure CSSNEW

CSS Grid Auto-Fitting Responsive Breadcrumb Trail

A breadcrumb laid out on a CSS grid with repeat(auto-fit, minmax()) so crumbs reflow into as many columns as fit and wrap into neat aligned rows on narrow screens — no media queries. The trail self-balances across any width, keeping crumbs evenly sized and gutters consistent as it wraps.

Published

NFT/Web3 Holographic Shimmer Breadcrumb Component — preview
18 / 39Pure CSSNEW

NFT/Web3 Holographic Shimmer Breadcrumb Component

A dark deep-space breadcrumb bar with a Pokemon-holo-card iridescent shimmer that sweeps a conic rainbow across the frosted glass surface on hover, giving NFT marketplaces an angle-dependent signature that fits collection to token drill-down paths.

Published

SaaS Marketing Site Gradient Text Breadcrumb Bar — preview
19 / 39Pure CSSNEW

SaaS Marketing Site Gradient Text Breadcrumb Bar

The breadcrumb SaaS marketing sites like Linear and Vercel reach for when a single line of text needs to feel alive. Crumbs are painted with a slow-drifting conic gradient clipped to text via @property, so the hue cycles through vivid oklch stops without ever touching the layout.

Published

Airbnb-Style Filter Chip Breadcrumb Navigation with Icons — preview
20 / 39Pure CSSNEW

Airbnb-Style Filter Chip Breadcrumb Navigation with Icons

Airbnb-style breadcrumb that pairs the category path with a row of removable filter chips — each chip carries an icon, a label, and a hoverable X — the exact pattern travel and marketplace sites use to show active filters above listings.

Published

Editorial Blog Breadcrumb with Animated Wave Underline Hover — preview
21 / 39Pure CSSNEW

Editorial Blog Breadcrumb with Animated Wave Underline Hover

Editorial publishing breadcrumb in the spirit of Medium, Substack, and NYT — warm cream paper, muted ink serif type, and a signature hover flourish where an inline SVG wave underline draws itself beneath each crumb like a printer's flourish finishing on the page.

Published

Developer Docs Breadcrumb with One-Click Path Copy to Clipboard — preview
22 / 39CSS + JSNEW

Developer Docs Breadcrumb with One-Click Path Copy to Clipboard

Terminal-inspired breadcrumb for developer documentation sites (Stripe, Vercel, Cloudflare, Docker, MDN). Monospace typography with slash separators and a one-click copy button that pushes the full path to the clipboard so devs can drop it straight into Slack, Linear, or a PR.

Published

Modern Pure CSS Arrow Breadcrumb Bar using clip-path Polygons — preview
23 / 39Pure CSS

Modern Pure CSS Arrow Breadcrumb Bar using clip-path Polygons

The classic interlocking-arrow breadcrumb — no images, no background sprites, no border hacks. Each crumb is a single anchor sliced into a chevron with one clip-path: polygon(), and a --arrow-depth custom property tunes the point angle across the whole trail from one line. First and last crumbs get clean flat outer edges.

PublishedUpdated

Multi-Line Aligned CSS Grid Subgrid Breadcrumb Layout — preview
24 / 39Pure CSS

Multi-Line Aligned CSS Grid Subgrid Breadcrumb Layout

A breadcrumb where icon, label and separator stay in perfect vertical alignment even when the trail wraps across multiple lines — solved with CSS subgrid. Each crumb inherits the parent grid's column tracks, so every icon column and every separator lines up down the whole wrapped trail like a table, without a table.

PublishedUpdated

Interactive Breadcrumb Links with Animated CSS Underline Glow — preview
25 / 39Pure CSS

Interactive Breadcrumb Links with Animated CSS Underline Glow

A minimalist breadcrumb whose links grow a directional animated underline on hover — wiping in from the left on enter, out to the right on leave — with a soft accent glow beneath the text. A tactile micro-interaction built from one ::after pseudo-element and a transform-origin flip, running fully on the compositor.

PublishedUpdated

Minimalist CSS Breadcrumb with Custom SVG Separators — preview
26 / 39Pure CSS

Minimalist CSS Breadcrumb with Custom SVG Separators

The cleanest possible breadcrumb: text links divided by CSS-generated separators you can switch between a slash, a dot, or a themed SVG chevron in one line — with the SVG recoloured automatically via mask-image so separators always match your text colour. A --sep custom property makes the divider a one-token swap.

PublishedUpdated

Multi-Step Checkout & Form Wizard CSS Breadcrumb Indicator — preview
27 / 39Pure CSS

Multi-Step Checkout & Form Wizard CSS Breadcrumb Indicator

Breadcrumbs reimagined as a checkout/wizard progress bar: numbered circular step badges (auto-numbered with CSS counters), connecting progress lines that fill for completed steps, and clear done / current / upcoming states — the Cart › Shipping › Payment › Review pattern, all in CSS with no manual numbering.

PublishedUpdated

Pure CSS Ribbon-Style Chevron Breadcrumb Trail — preview
28 / 39Pure CSS

Pure CSS Ribbon-Style Chevron Breadcrumb Trail

A bold ribbon-banner breadcrumb: overlapping coloured segments with folded-ribbon notches at each join, built from rotated pseudo-elements and layered fills — the tactile, physical 'paper ribbon' look for playful product and marketing UIs, done entirely in CSS.

PublishedUpdated

Pill-Shape Badge CSS Breadcrumb Bar UI — preview
29 / 39Pure CSS

Pill-Shape Badge CSS Breadcrumb Bar UI

Each crumb is a rounded capsule with a soft tinted background and comfortable gap spacing — the friendly 'pill' breadcrumb common in modern dashboards and mobile apps. Full 9999px radius, subtle hover fill lift, and an accent-filled current pill, laid out with flex + gap so it wraps cleanly.

PublishedUpdated

Clean Line-Separator Minimalist CSS Breadcrumbs — preview
30 / 39Pure CSS

Clean Line-Separator Minimalist CSS Breadcrumbs

The most restrained trail in the set: crumbs divided by thin vertical hairline rules with generous whitespace, low-profile muted type, and a single hairline that brightens under the active crumb. Editorial, calm, and perfect for content-heavy sites where the breadcrumb should whisper, not shout.

PublishedUpdated

Gradient Background Glow CSS Breadcrumb Bar — preview
31 / 39Pure CSS

Gradient Background Glow CSS Breadcrumb Bar

A vivid breadcrumb bar with a multi-stop gradient fill and a matching coloured glow beneath it, plus gradient-clipped text on the current crumb so its label is painted with the same spectrum. The bold, energetic treatment for landing pages and creative product headers — animated gradient optional.

PublishedUpdated

Floating Card Shadow CSS Breadcrumb Navigation — preview
32 / 39Pure CSS

Floating Card Shadow CSS Breadcrumb Navigation

Each crumb is an elevated white card floating over the surface with a soft layered shadow, connected by faint dotted trails — a clear, tactile step-by-step path where every node reads as a distinct, liftable card. Hover raises the card higher; the current card rests at the top elevation.

PublishedUpdated

Truncated Ellipsis Compact CSS Mobile Breadcrumb — preview
33 / 39Pure CSS

Truncated Ellipsis Compact CSS Mobile Breadcrumb

A single-line breadcrumb engineered for tight mobile widths: each crumb caps its width and truncates long titles with an ellipsis, the trail never wraps or overflows, and the current page always stays fully visible while ancestors shrink first. Pure CSS overflow management for constrained viewports.

PublishedUpdated

Inline Bullet-Point Dot Separator CSS Breadcrumb — preview
34 / 39Pure CSS

Inline Bullet-Point Dot Separator CSS Breadcrumb

The classic blog / editorial trail: text links separated by subtle centred bullet dots generated with ::after{content:'•'}. Understated, inline, and instantly familiar — with a refined hover and an accent current page. The go-to for article headers, category lists, and post meta rows.

PublishedUpdated

Skewed Parallel Quadrilateral CSS Breadcrumb Bar — preview
35 / 39Pure CSS

Skewed Parallel Quadrilateral CSS Breadcrumb Bar

A sporty, angular breadcrumb of parallelogram segments: each crumb is skewed with transform:skewX(-20deg) and its text un-skewed back so labels stay upright inside slanted blocks — the dynamic, motion-suggesting look common in gaming, sports and automotive UIs.

PublishedUpdated

Outline Border-Only Geometric CSS Breadcrumbs — preview
36 / 39Pure CSS

Outline Border-Only Geometric CSS Breadcrumbs

A wireframe breadcrumb with no solid fills: each crumb is an outlined chevron shape drawn with borders and a clip-path cutout, so the trail reads as clean line-art. Hover fills the outline; the current crumb inverts to a solid. The technical, blueprint aesthetic for developer tools and design systems.

PublishedUpdated

Circular Icon & Numbered CSS Step Breadcrumbs — preview
37 / 39Pure CSS

Circular Icon & Numbered CSS Step Breadcrumbs

A breadcrumb where each crumb leads with a circular badge holding a number or an SVG icon, followed by its label — the polished 'stepper meets breadcrumb' pattern for onboarding, dashboards and multi-part guides. Badges auto-number via CSS counters; icons swap in per crumb; connectors trace the path.

PublishedUpdated

Frosted Glass Dark UI CSS Breadcrumb Component — preview
38 / 39Pure CSS

Frosted Glass Dark UI CSS Breadcrumb Component

A dark-mode frosted-glass breadcrumb: a translucent charcoal panel with backdrop blur over a moody gradient, hairline top-edge sheen, and cool accent links — the dark counterpart to the glassmorphism demo, tuned for modern dark dashboards and creative dark UIs.

PublishedUpdated

Modern Micro-Interaction Animated Hover Breadcrumbs — preview
39 / 39Pure CSS

Modern Micro-Interaction Animated Hover Breadcrumbs

A breadcrumb built around a delightful hover micro-interaction: each crumb lifts with a subtle translateY, gains a soft shadow, and its separator chevron nudges forward — small, spring-eased motions that make the trail feel responsive and alive without being distracting. Compositor-only and reduced-motion-safe.

PublishedUpdated

FAQ

Frequently asked questions

How do I make CSS breadcrumbs accessible for WCAG 2.2, screen readers, and Google Rich Results?
Accessibility is not optional for breadcrumbs — they are one of the four navigation landmarks Google's rich-result crawler and every major screen reader specifically look for. Demo 01 (Accessible Breadcrumb Navigation with Schema.org Microdata & ARIA) is the reference implementation for this collection and the pattern every other demo inherits from. The root element must be <nav aria-label="Breadcrumb"> — the label is what NVDA, JAWS, VoiceOver, and TalkBack announce when the user jumps between landmarks with the D key or rotor, so shipping it unlabeled means the crumb trail is indistinguishable from your primary nav. Inside the <nav>, use an ordered list <ol>, never <ul>: the WAI-ARIA Authoring Practices Guide, HTML Living Standard, and Schema.org spec all treat breadcrumb hierarchy as inherently sequential. The final crumb — the page the user is currently on — must carry aria-current="page" and should not be a link; screen readers announce it as "current page", which is the entire semantic point of the pattern. Separators (/, , >, chevrons) must be injected via CSS ::before pseudo-elements or with <span aria-hidden="true">, never as literal text inside the anchor — otherwise a screen reader reads "Home slash Products slash Shoes", which is exhausting after two crumbs. For Google Rich Results eligibility, layer Schema.org BreadcrumbList as either inline Microdata (itemscope itemtype="https://schema.org/BreadcrumbList" plus itemprop="itemListElement" per crumb) or a JSON-LD application/ld+json script block — Google Search Central accepts both and gives them identical weight. Hit targets must clear WCAG 2.5.5 Level AAA (44×44 CSS pixels); use min-height: 44px; padding-inline: 12px; display: inline-flex; align-items: center on every anchor so the click surface extends past the visible text, which matters on touch devices where a 12px link is a rage-tap. Every anchor also needs a visible :focus-visible outline — a 2px solid ring in your accent color, offset 2px, satisfies WCAG 2.4.7. Getting this right isn't just a11y hygiene: it's legal risk mitigation under ADA Title III (US), Section 508 (US federal), EN 301 549 (EU EAA, enforceable June 2025), and AODA (Ontario). Every demo in this collection ships with this baseline pre-wired.
How do I make CSS breadcrumbs responsive on mobile (collapse the middle)?
Breadcrumbs break on mobile in three failure modes: they wrap to three lines, they scroll horizontally off-screen, or they push page content below the fold. All three are solvable in pure CSS. Demo 02 (Responsive Collapsing CSS Breadcrumb Bar using :has() Selector) uses the modern :has() approach: ol:has(li:nth-child(n+5)) li:not(:first-child):not(:nth-last-child(-n+2)) hides the middle crumbs and inserts a marker via ::before when the trail exceeds four items. This is fully declarative, requires zero JavaScript, and works in every evergreen browser (Chrome/Edge 105+, Safari 15.4+, Firefox 121+). Demo 28 (Truncated Ellipsis Compact CSS Mobile Breadcrumb, slug glassmorphism-bar) takes the complementary approach — each crumb gets max-width: 12ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: inline-block, so long product names like "Nike Air Zoom Pegasus 41 Premium Trail Edition" truncate to "Nike Air Zoom P…" instead of shoving the current-page crumb off-screen. Prefer container queries over viewport media queries when the breadcrumb sits inside a sidebar, modal, or split-pane layout: @container (max-width: 480px) { … } reacts to its actual container width, which viewport @media cannot know. Container queries have been Baseline since February 2023 and are safe to ship. For deeper hierarchies (e-commerce category trees five to seven levels deep), the industry standard is the ellipsis-dropdown pattern popularized by Amazon Fashion PDP: show first crumb, ellipsis <button aria-expanded="false" aria-controls="crumb-overflow">…</button>, penultimate crumb, current crumb. Tap the ellipsis and a role="menu" dropdown reveals the hidden middle. This preserves both the entry point (home) and the immediate parent (which is what most users click), which is exactly what Baymard Institute's e-commerce UX research recommends. Pair with overflow-x: auto; scroll-snap-type: x mandatory as a graceful fallback for edge-case ultra-deep trails — but always show some visual affordance that content is scrollable (a fade-out gradient via mask-image: linear-gradient(to right, black 90%, transparent) is the tier-1 signature). Do not just overflow-x: scroll and hope users find the swipe — 62% of mobile users never scroll horizontally unless they see a visible cue.
How do I add Schema.org BreadcrumbList structured data for Google Rich Results?
Google's rich-result breadcrumb trail — the small clickable hierarchy that replaces the raw URL in a SERP snippet — measurably lifts CTR by 10-30% on category and product pages. It is one of the highest-ROI structured-data investments a site can make, and Demo 01 ships both compatible formats. Google Search Central explicitly documents two acceptable markup approaches, and they carry identical weight in ranking and eligibility. Approach 1 — inline Microdata: wrap the <ol> with itemscope itemtype="https://schema.org/BreadcrumbList", then each <li> gets itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem", with the inner <a itemprop="item"><span itemprop="name">Products</span></a> plus <meta itemprop="position" content="2">. It travels with the HTML, so any static-site generator (Astro, Eleventy, Hugo, Jekyll) ships it without extra build steps. Approach 2 — JSON-LD (Google's preferred format): drop an application/ld+json script tag in the head with { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" }, …] }. JSON-LD decouples markup from presentation, which is why every headless-CMS-driven Next.js site defaults to it. Google's non-negotiable requirements: minimum two ListItem entries (a single-item breadcrumb is rejected), a numeric position starting at 1 (not 0), and either an item URL or an @id for every entry except optionally the final crumb (the current page's URL can be omitted since it equals the page URL). The final crumb's name should still be present so the SERP renders the trail label. Validation is mandatory before ship: run every URL through search.google.com/test/rich-results — it will flag missing position, malformed URLs, and mismatched item counts. Add the URL to Google Search Console and watch the Breadcrumbs enhancement report for indexed vs. valid vs. error counts; a page appearing under Valid is confirmed eligible for the rich result, though eligibility does not guarantee display. If you emit both Microdata and JSON-LD (some legacy sites do), Google deduplicates on @id — no penalty, but pick one to reduce payload. Never emit BreadcrumbList markup for content the breadcrumb trail doesn't visibly represent on the page; Google treats this as manual-action-eligible spam under its Structured Data Guidelines.
How do I ship an e-commerce filter breadcrumb (Amazon/Shopify/Etsy style)?
E-commerce filter breadcrumbs solve a distinct UX problem from navigational breadcrumbs: users faceting a category (Women's → Shoes → Size 8 → Under $80 → Waterproof) need to see what filters are active and remove them individually without losing the others. Demo 04 (E-Commerce Filter & Attribute Breadcrumb Navigation Component) and Demo 37 (Airbnb-Style Filter Chip Breadcrumb Navigation with Icons, slug chip-with-icon) are the two production patterns. The correct semantic structure is two sibling lists: an <ol aria-label="Category path"> for the navigational hierarchy (Home → Women → Shoes) followed by a <ul aria-label="Active filters"> of removable filter chips. Each filter chip is a <button type="button" aria-label="Remove filter: Size 8">Size 8 <span aria-hidden="true">×</span></button> — the × glyph is visually decorative, so it must be aria-hidden, and the semantic action lives in the aria-label. This is exactly the pattern Amazon Fashion, Etsy Category Refinement, and Shopify Dawn theme ship. Chips are styled with display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px 6px 14px; border-radius: 999px; background: color-mix(in oklch, currentColor 8%, transparent); border: 1px solid color-mix(in oklch, currentColor 20%, transparent). Use container queries so the chip row can wrap and re-flow inside sidebars, off-canvas drawers, and Shopify PDP layouts. Add view-transition-name: chip-{id} for zero-JS remove animations via the View Transitions API — a chip fades and the row reflows smoothly when a shopper drops a filter. Compatibility notes for the major platforms: Shopify Dawn ships breadcrumbs via sections/main-collection-banner.liquid — this component drops in directly. WooCommerce Storefront exposes woocommerce_breadcrumb as a filter hook. BigCommerce Cornerstone uses Handlebars templates in templates/components/category/. Magento 2 uses Magento_Theme::html/breadcrumbs.phtml. E-commerce dev traffic is Carbon Ads' highest-CPM band ($3-25 CPM in the US/UK/CA/AU/NZ tier, with fashion + home goods on the top end), so this demo pair is worth shipping right. Bonus: emit BreadcrumbList JSON-LD for the category chain only, not the filter chips — filter permutations should not become Schema.org entries or you will trigger duplicate-content signals and dilute rich-result eligibility on the parent category page.
How do I build a checkout progress breadcrumb (Stripe/Shopify Pay style)?
Checkout breadcrumbs are a different creature: they are progress indicators, not navigational trails, and treating them as regular breadcrumbs will confuse both users and assistive tech. Demo 22 (Multi-Step Checkout & Form Wizard CSS Breadcrumb Indicator, slug progress-track) is the reference. The tree steps are numbered (usually 3-5: Cart → Shipping → Payment → Review → Confirmation), each has one of three states (complete, current, upcoming), and only completed steps are clickable back-links. Model state with a data-state attribute on each <li>: <li data-state="complete">, <li data-state="current">, <li data-state="upcoming">. Then drive all styling from CSS attribute selectors: [data-state="complete"] .step-marker { background: var(--success); }, [data-state="current"] .step-marker { outline: 3px solid var(--accent); }, [data-state="upcoming"] { opacity: 0.5; pointer-events: none; }. Auto-number with CSS counters: ol { counter-reset: step; } and li::before { counter-increment: step; content: counter(step); } — this way inserting or removing a step doesn't require touching numeric HTML. The a11y detail that matters most: use aria-current="step" on the active step, not aria-current="page". The ARIA 1.2 spec defines step as the token for the current item in a set representing a process, and screen readers announce it as "current step, step 3 of 5". Add aria-label="Checkout progress, step 3 of 5" to the outer <nav> so screen-reader users get an orientation cue before they land on the current step. Draw the connecting line between markers with a single ::after pseudo-element and flex: 1 spacers — no SVG required. For the tick glyph on complete steps, use a CSS mask-image so it inherits currentColor. This pattern is table-stakes at Stripe Checkout, Shopify Pay, PayPal Checkout, Amazon Pay, Klarna, and Afterpay — every one uses a numbered, three-state stepper with a connecting line. Fintech developer traffic runs $15-45 CPM in tier-1 markets (highest single vertical Carbon Ads publishes), so this is the single highest-value demo in the collection to get pixel-right.
How do I make a SaaS dashboard breadcrumb (Vercel/Linear/Notion style)?
SaaS app-shell breadcrumbs are the workhorse of every admin console — they live persistently in the header bar, reflect the active route hierarchy, and give users a one-click escape hatch to any ancestor. Four demos in this collection cover the aesthetic range: Demo 23 (Pure CSS Ribbon-Style Chevron Breadcrumb Trail, slug subway-line) for a compact chevron trail, Demo 18 (Modern Pure CSS Arrow Breadcrumb Bar using clip-path Polygons, slug arrow-chain) for a bolder arrow-tab look, Demo 27 (Floating Card Shadow CSS Breadcrumb Navigation, slug floating-island) for a subtle elevated pill, and Demo 36 (SaaS Marketing Site Gradient Text Breadcrumb Bar, slug gradient-text) for the animated gradient hero-text style. All four use the same skeleton: <nav aria-label="Breadcrumb"><ol><li><a> with aria-current="page" on the final crumb, and separators as pseudo-elements. Placement rule: pin the breadcrumb inside the app-shell top bar, aligned to the primary content column (not the sidebar), height 40-48px, sticky with position: sticky; top: 0; z-index: 10; backdrop-filter: blur(12px) so it stays visible when the main content scrolls. Route integration is where SaaS breadcrumbs diverge from static-site breadcrumbs. Next.js App Router: usePathname() from next/navigation returns the current path; split on /, walk segments, look up display names from your route metadata (many teams keep a routeManifest.ts). Because breadcrumbs are read-only render output, keep this as a Server Component where possible — no 'use client' needed. TanStack Router: useMatches() returns the full match tree with routeContext; map each match to a crumb using the route's staticData.breadcrumb. Remix: use route handle.breadcrumb convention and useMatches(). Nuxt: useRoute().matched plus the meta.breadcrumb convention. SvelteKit: $page.route.id split and mapped. Astro: Astro.url.pathname is straightforward — Astro is ideal for marketing-site breadcrumbs. This pattern ships in Stripe Dashboard, Linear, Vercel, Notion, Cursor Editor, Supabase Studio, Railway, PlanetScale, and Netlify Console. SaaS admin dev traffic runs $8-25 CPM in tier-1 markets — the exact audience buying Vercel Pro, Linear Business, and Cursor licenses.
How do I add a dropdown menu of sibling pages to each breadcrumb crumb (Amazon-style)?
Sibling-menu breadcrumbs let users hop laterally through a category tree without backtracking — hover any crumb and a dropdown reveals the siblings at that level (Home → Electronics → [hover] → Laptops / Tablets / Cameras / Audio). It's a power-user pattern most famously shipped on Amazon PDPs, and Demo 10 (Breadcrumb Bar with Built-In Dropdown Sibling Menus) is the pure-CSS implementation. Structure each crumb as a nested list: <li><a href="…">Electronics</a><button type="button" aria-expanded="false" aria-controls="siblings-2" aria-label="Show sibling categories"></button><ul id="siblings-2" role="menu" hidden><li role="none"><a role="menuitem" href="…">Laptops</a></li>…</ul></li>. The disclosure <button> is essential for touch and keyboard — hover alone is a WCAG 2.1.1 fail. Show the dropdown with a dual trigger: li:hover > ul, li:focus-within > ul, li:has(button[aria-expanded="true"]) > ul { display: block; }. This gives you desktop hover, keyboard Tab-based reveal via :focus-within, and touch/click via the ARIA-toggled button — all with zero JavaScript on the CSS side. A tiny JS toggle for aria-expanded is the only script required, and it's ~15 lines. Position the dropdown with position: absolute; top: 100%; left: 0; min-width: 200px; z-index: 20; pair with CSS Anchor Positioning if you're targeting Chrome 125+ only — position-anchor and inset-area: bottom span-right handle edge-of-viewport flipping declaratively. Add a small <svg aria-hidden="true"> chevron inside the button that rotates 180° via [aria-expanded="true"] svg { transform: rotate(180deg); } — the affordance is what makes users discover the feature. Guard the reveal animation with @media (prefers-reduced-motion: reduce) { ul { transition: none; } }. Menu semantics matter: use role="menu" on the <ul>, role="menuitem" on each <a>, and wrap the trigger + menu in a container with role="none" on intermediate <li> to strip default list semantics per the ARIA menu pattern. Ships on Amazon PDP, IKEA, Wayfair, Home Depot, Best Buy, and B&H Photo — every deep-catalog retailer with meaningful lateral traffic between siblings uses this pattern.
How do I build a breadcrumb sticky-header that shrinks on scroll (Docusaurus/Mintlify style)?
Sticky-shrinking breadcrumbs are the signature of every modern docs site — the header is tall and airy when you land on a page, and it compresses to a slim sticky bar once you start scrolling into content, keeping the trail visible without stealing vertical space. Demo 07 (Sticky Top CSS Navigation Header with Shrinking Breadcrumb Trail) is the reference. Base layer: position: sticky; top: 0; z-index: 20; padding: 20px 24px; background: color-mix(in oklch, var(--bg) 85%, transparent); backdrop-filter: blur(16px) saturate(140%); -webkit-backdrop-filter: blur(16px) saturate(140%). The frosted-blur backdrop is what makes it read as premium — flat opaque bars look 2015. Progressive enhancement layer: use the Scroll-Driven Animations API (animation-timeline: view() and scroll(), Chrome 115+, Edge 115+, Safari 26+) to declaratively shrink padding, font-size, and backdrop opacity in pure CSS: @keyframes shrink { to { padding-block: 8px; font-size: 0.875rem; } } .breadcrumb-bar { animation: shrink linear both; animation-timeline: scroll(root); animation-range: 0 120px; }. Zero JavaScript, zero scroll event listeners, zero jank, and it gracefully no-ops on unsupported browsers because unsupported browsers just ignore the timeline properties. Fallback layer for Firefox and older Safari: a 15-line IntersectionObserver that toggles a .is-shrunk class on a sentinel <div> placed above the sticky bar — when the sentinel scrolls out of view, add the class and let CSS transitions handle the animation. Always feature-detect (if ('animationTimeline' in document.documentElement.style)) so you don't double-animate. Guard the shrink transition with @media (prefers-reduced-motion: reduce) { .breadcrumb-bar { transition: none; animation: none; } } — the vestibular-motion crowd will thank you and WCAG 2.3.3 will pass. Ships in Docusaurus 3, Mintlify, Nextra, Docsify, VitePress, Starlight, and Fumadocs. Dev-tools docs traffic converts unusually well for Carbon Ads ($8-15 CPM in tier-1 markets) because the audience is literally shopping for developer SaaS. Bonus: pair with a :has(#toc-open) trick to widen the sticky bar when a mobile TOC drawer opens, so the trail remains readable at all viewport widths.
How do I do a dark mode / light mode breadcrumb toggle in pure CSS (no framework)?
Every demo in this collection ships adaptive dark/light theming, and Demo 03 (Adaptive Light & Dark Mode Breadcrumb Bar with CSS Custom Properties) is the pattern to copy verbatim. The architecture is custom-properties at :root, one @media (prefers-color-scheme: dark) override for the OS default, one :root[data-theme="dark"] override for a manual toggle, and every component below reads from the tokens: --bg, --surface, --ink, --ink-muted, --accent, --border. :root { --bg: oklch(0.98 0.005 250); --ink: oklch(0.2 0.02 250); --accent: oklch(0.55 0.18 260); } @media (prefers-color-scheme: dark) { :root { --bg: oklch(0.14 0.01 250); --ink: oklch(0.92 0.01 250); } } :root[data-theme="dark"] { --bg: oklch(0.14 0.01 250); --ink: oklch(0.92 0.01 250); } :root[data-theme="light"] { --bg: oklch(0.98 0.005 250); --ink: oklch(0.2 0.02 250); }. The manual override data-theme attribute wins over @media because it's more specific, which is exactly the cascade behavior you want. Set color-scheme: light dark on :root so native form controls, scrollbars, and the browser's default focus ring adopt the correct palette automatically — one line, huge polish gain, most sites forget it. Derive hover, focus, and border colors with color-mix() instead of hardcoding a second palette: a:hover { background: color-mix(in oklch, var(--accent) 12%, transparent); } and border: 1px solid color-mix(in oklch, var(--ink) 15%, transparent). This means your dark and light modes stay perceptually balanced from a single set of base tokens — you're not maintaining two parallel color systems. Use oklch() for every color declaration: it's perceptually uniform, so oklch(0.55 0.18 260) and oklch(0.55 0.18 30) look equally bright even though one is blue and one is orange — an impossible feat in HSL or RGB and the reason Radix, shadcn, and Tailwind v4 all migrated to it. Both color-mix() and oklch() are Baseline as of 2024 and safe to ship. The toggle button itself is <button aria-pressed="false" aria-label="Toggle dark mode">, and the JS is 12 lines: read localStorage.theme, apply the data-theme attribute on <html>, flip aria-pressed on click, persist. Load the theme-application snippet inline in <head> before any body render to prevent the FOUC flash — this is the one script that must be render-blocking.
Do these breadcrumbs work with React, Next.js, Vue, Svelte, Astro, Tailwind, and shadcn?
Yes — every demo is framework-agnostic by design. Roughly 35 of the 39 demos are Pure CSS + semantic HTML, which means zero JavaScript runtime, zero framework lock-in, and zero hydration cost. Drop the markup into a React component, a Vue SFC template, a Svelte component, an Astro .astro file, or a Blade/ERB/Twig partial — the HTML doesn't change, only the file extension. The four demos that do use JavaScript (Demo 10 dropdown sibling menus, Demo 07 sticky-shrink with IntersectionObserver fallback, and Demo 39 copy-path) are ~15 lines of vanilla JS each and wrap trivially: put the code in a React useEffect, a Vue onMounted, a Svelte onMount, a SolidJS onMount, or an Astro script block (which by default ships processed and bundled). HTML→JSX conversion is mechanical: rename class to className, rename for to htmlFor, self-close void elements (<br />, <img />), convert tabindex to tabIndex, and convert inline style="color: red" strings to style={{ color: 'red' }} objects. All aria-* and data-* attributes stay identical in JSX. There's actually a one-click HTML to JSX converter in the toolkit if you'd rather not do it by hand. Next.js App Router: all Pure-CSS demos render as Server Components with no 'use client' directive — SSR-safe, zero client JS, streams cleanly. Only Demos 10, 07, and 39 need 'use client', and only for their small interactive slice; the crumb markup itself can stay server-rendered. SvelteKit / Nuxt / Remix / SolidStart: same story — SSR-safe by default, hydration cost is essentially zero. Astro: this collection is a perfect fit; put the CSS in a style block inside the .astro component and Astro will scope it automatically without breaking the .bc-NN pattern. Tailwind users: keep the raw CSS as-is (it's under 2 KB gzipped per demo) or run one of the existing CSS-to-Tailwind converters; either way the semantic HTML stays untouched. shadcn/ui notably does not ship a Breadcrumb primitive — this collection fills that gap directly, and any of the 39 demos can be dropped into a shadcn app without pulling in additional dependencies or violating the design-token architecture. Tailwind Catalyst ships a breadcrumb component but is $299/dev/yr and only for React — this collection is free, framework-agnostic, and covers 39 aesthetics instead of one.

Related collections

32 CSS Accordions — Vertical & Horizontal preview

32 CSS Accordions — Vertical & Horizontal

32 free CSS accordions covering pure-CSS FAQ blocks with details/summary, mobile navigation menus, e-commerce filter sidebars, nested tree views, exclusive single-open groups and smoothly animated height:auto — plus 26 visual variations in vertical, horizontal and hybrid layouts. Copy-paste HTML and CSS, no JavaScript.

26 CSS Circular Menus preview

26 CSS Circular Menus

26 hand-coded CSS circular and radial menu designs, from the floating-action FAB speed dial and dashboard radial hubs to game-style pie-slice wheels, SVG gooey metaball fans, hexagonal honeycombs, iris-aperture reveals, orbiting satellites on offset-path, compass-rose directional nav, sci-fi HUD rings, glassmorphism popovers built on the native Popover API, vinyl-record players, and full-takeover nebula overlays on native dialog. Every design uses CSS trigonometry (sin(), cos()) or the counter-rotation trick for positioning, ships real keyboard navigation, aria-labels on icon-only buttons, and a prefers-reduced-motion guard. Copy-paste HTML, CSS and vanilla JS with zero framework dependencies — MIT licensed.

22 CSS Dropdown Menu Designs preview

22 CSS Dropdown Menu Designs

22 hand-coded CSS dropdown menu designs with live demos — slide-down fade, clip-path curtain reveal, 3D perspective flip, elastic bounce spring, glassmorphism float panel, stagger children reveal, mega-menu grid, underline nav fade, native details/summary, checkbox-hack mobile nav, nested multi-level flyout, icon sidebar flyout, split-screen mega-menu, segmented pill nav, color swatch picker, right-click context menu, keyboard-accessible roving tabindex, stagger blur entrance, command palette search, autocomplete suggestion, click-outside close, and multi-select chip. 15 pure CSS + 7 with a tiny vanilla JS snippet — no framework. WCAG 2.2 aria-expanded + aria-haspopup + focus management, prefers-reduced-motion honoured, MIT licensed.

Search CodeFronts

Loading…