35 / 39
All 39 in 39 CSS Breadcrumbs
- 01Accessible Breadcrumb Navigation with Schema.org Microdata & ARIA
- 02Responsive Collapsing CSS Breadcrumb Bar using :has() Selector
- 03Adaptive Light & Dark Mode Breadcrumb Bar with CSS Custom Properties
- 04E-Commerce Filter & Attribute Breadcrumb Navigation Component
- 05Modern Glassmorphism Floating Breadcrumb Bar UI Design
- 06Neumorphic Soft UI Breadcrumb Navigation with Dual Box Shadows
- 07Sticky Top CSS Navigation Header with Shrinking Breadcrumb Trail
- 08Material Design Flat Breadcrumb Navigation Bar
- 09Isometric 3D Layered CSS Breadcrumb Navigation
- 10Breadcrumb Bar with Built-In Dropdown Sibling Menus
- 11Full-Width Block-Style Segmented CSS Breadcrumb Bar
- 12CSS Custom-Property Accent-Color Toggle Breadcrumb
- 13Seamless Arrow-Cutout CSS3 Breadcrumb Trail
- 14Compact Icon-Only Home Node CSS Breadcrumb Bar
- 15Segmented Rounded-Outline Pill CSS Breadcrumb
- 16Neumorphic Soft Inset-Shadow CSS Breadcrumbs
- 17CSS Grid Auto-Fitting Responsive Breadcrumb Trail
- 18NFT/Web3 Holographic Shimmer Breadcrumb Component
- 19SaaS Marketing Site Gradient Text Breadcrumb Bar
- 20Airbnb-Style Filter Chip Breadcrumb Navigation with Icons
- 21Editorial Blog Breadcrumb with Animated Wave Underline Hover
- 22Developer Docs Breadcrumb with One-Click Path Copy to Clipboard
- 23Modern Pure CSS Arrow Breadcrumb Bar using clip-path Polygons
- 24Multi-Line Aligned CSS Grid Subgrid Breadcrumb Layout
- 25Interactive Breadcrumb Links with Animated CSS Underline Glow
- 26Minimalist CSS Breadcrumb with Custom SVG Separators
- 27Multi-Step Checkout & Form Wizard CSS Breadcrumb Indicator
- 28Pure CSS Ribbon-Style Chevron Breadcrumb Trail
- 29Pill-Shape Badge CSS Breadcrumb Bar UI
- 30Clean Line-Separator Minimalist CSS Breadcrumbs
- 31Gradient Background Glow CSS Breadcrumb Bar
- 32Floating Card Shadow CSS Breadcrumb Navigation
- 33Truncated Ellipsis Compact CSS Mobile Breadcrumb
- 34Inline Bullet-Point Dot Separator CSS Breadcrumb
- 35Skewed Parallel Quadrilateral CSS Breadcrumb Bar
- 36Outline Border-Only Geometric CSS Breadcrumbs
- 37Circular Icon & Numbered CSS Step Breadcrumbs
- 38Frosted Glass Dark UI CSS Breadcrumb Component
- 39Modern Micro-Interaction Animated Hover Breadcrumbs
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.
Build interactive UI like this from scratch: 20 HTML, CSS & JavaScript projects
ZTM · JavaScript Web Projects · 30‑day money-back guarantee · Affiliate link
The code
<nav class="bc-35" aria-label="Breadcrumb">
<ol>
<li><a href="#"><span>Home</span></a></li>
<li><a href="#"><span>Garage</span></a></li>
<li><a href="#"><span>Models</span></a></li>
<li><a href="#" aria-current="page"><span>GT-R Spec</span></a></li>
</ol>
</nav><nav class="bc-35" aria-label="Breadcrumb">
<ol>
<li><a href="#"><span>Home</span></a></li>
<li><a href="#"><span>Garage</span></a></li>
<li><a href="#"><span>Models</span></a></li>
<li><a href="#" aria-current="page"><span>GT-R Spec</span></a></li>
</ol>
</nav>.bc-35 {
width: 100%;
min-height: 100vh;
font-family: system-ui,'Segoe UI',sans-serif;
padding: 30px;
background: oklch(0.16 0.015 250);
display: flex;
align-items: center;
justify-content: center;
}
.bc-35 * {
box-sizing: border-box;
}
.bc-35 ol {
display: flex;
gap: 5px;
list-style: none;
margin: 0;
padding: 0;
}
.bc-35 a {
display: block;
padding: 0;
transform: skewX(-20deg);
background: oklch(0.4 0.03 250);
overflow: hidden;
transition: background-color .18s ease;
}
.bc-35 a span {
display: flex;
align-items: center;
height: 40px;
padding: 0 22px;
transform: skewX(20deg);
font: 700 13px/1 system-ui,sans-serif;
letter-spacing: .03em;
color: oklch(0.9 0.01 250);
text-transform: uppercase;
}
.bc-35 li:nth-child(2) a {
background: oklch(0.44 0.04 250);
}
.bc-35 li:nth-child(3) a {
background: oklch(0.48 0.05 250);
}
.bc-35 a:hover {
background: oklch(0.55 0.08 250);
}
.bc-35 li:last-child a {
background: oklch(0.62 0.19 25);
}
.bc-35 li:last-child a:hover {
background: oklch(0.66 0.2 25);
}
.bc-35 a:focus-visible {
outline: none;
}
.bc-35 a:focus-visible span {
outline: 2px solid #fff;
outline-offset: -3px;
}
@media (prefers-reduced-motion: reduce) {
.bc-35 a {
transition: none;
}
}.bc-35 {
width: 100%;
min-height: 100vh;
font-family: system-ui,'Segoe UI',sans-serif;
padding: 30px;
background: oklch(0.16 0.015 250);
display: flex;
align-items: center;
justify-content: center;
}
.bc-35 * {
box-sizing: border-box;
}
.bc-35 ol {
display: flex;
gap: 5px;
list-style: none;
margin: 0;
padding: 0;
}
.bc-35 a {
display: block;
padding: 0;
transform: skewX(-20deg);
background: oklch(0.4 0.03 250);
overflow: hidden;
transition: background-color .18s ease;
}
.bc-35 a span {
display: flex;
align-items: center;
height: 40px;
padding: 0 22px;
transform: skewX(20deg);
font: 700 13px/1 system-ui,sans-serif;
letter-spacing: .03em;
color: oklch(0.9 0.01 250);
text-transform: uppercase;
}
.bc-35 li:nth-child(2) a {
background: oklch(0.44 0.04 250);
}
.bc-35 li:nth-child(3) a {
background: oklch(0.48 0.05 250);
}
.bc-35 a:hover {
background: oklch(0.55 0.08 250);
}
.bc-35 li:last-child a {
background: oklch(0.62 0.19 25);
}
.bc-35 li:last-child a:hover {
background: oklch(0.66 0.2 25);
}
.bc-35 a:focus-visible {
outline: none;
}
.bc-35 a:focus-visible span {
outline: 2px solid #fff;
outline-offset: -3px;
}
@media (prefers-reduced-motion: reduce) {
.bc-35 a {
transition: none;
}
}/* No JavaScript — each block is skewX(-20deg) into a parallelogram; the inner span is skewX(20deg) to keep the label upright. Focus ring rides the un-skewed span. */
/* No JavaScript — each block is skewX(-20deg) into a parallelogram; the inner span is skewX(20deg) to keep the label upright. Focus ring rides the un-skewed span. */Here's a working CSS Breadcrumb 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: Skewed Parallel Quadrilateral CSS Breadcrumb Bar
Source: https://codefronts.com/navigation/css-breadcrumbs/diagonal-slash/
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.
## HTML
```html
<nav class="bc-35" aria-label="Breadcrumb">
<ol>
<li><a href="#"><span>Home</span></a></li>
<li><a href="#"><span>Garage</span></a></li>
<li><a href="#"><span>Models</span></a></li>
<li><a href="#" aria-current="page"><span>GT-R Spec</span></a></li>
</ol>
</nav>
```
## CSS
```css
.bc-35 {
width: 100%;
min-height: 100vh;
font-family: system-ui,'Segoe UI',sans-serif;
padding: 30px;
background: oklch(0.16 0.015 250);
display: flex;
align-items: center;
justify-content: center;
}
.bc-35 * {
box-sizing: border-box;
}
.bc-35 ol {
display: flex;
gap: 5px;
list-style: none;
margin: 0;
padding: 0;
}
.bc-35 a {
display: block;
padding: 0;
transform: skewX(-20deg);
background: oklch(0.4 0.03 250);
overflow: hidden;
transition: background-color .18s ease;
}
.bc-35 a span {
display: flex;
align-items: center;
height: 40px;
padding: 0 22px;
transform: skewX(20deg);
font: 700 13px/1 system-ui,sans-serif;
letter-spacing: .03em;
color: oklch(0.9 0.01 250);
text-transform: uppercase;
}
.bc-35 li:nth-child(2) a {
background: oklch(0.44 0.04 250);
}
.bc-35 li:nth-child(3) a {
background: oklch(0.48 0.05 250);
}
.bc-35 a:hover {
background: oklch(0.55 0.08 250);
}
.bc-35 li:last-child a {
background: oklch(0.62 0.19 25);
}
.bc-35 li:last-child a:hover {
background: oklch(0.66 0.2 25);
}
.bc-35 a:focus-visible {
outline: none;
}
.bc-35 a:focus-visible span {
outline: 2px solid #fff;
outline-offset: -3px;
}
@media (prefers-reduced-motion: reduce) {
.bc-35 a {
transition: none;
}
}
```
## JavaScript
```js
/* No JavaScript — each block is skewX(-20deg) into a parallelogram; the inner span is skewX(20deg) to keep the label upright. Focus ring rides the un-skewed span. */
```Here's a working CSS Breadcrumb 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: Skewed Parallel Quadrilateral CSS Breadcrumb Bar
Source: https://codefronts.com/navigation/css-breadcrumbs/diagonal-slash/
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.
## HTML
```html
<nav class="bc-35" aria-label="Breadcrumb">
<ol>
<li><a href="#"><span>Home</span></a></li>
<li><a href="#"><span>Garage</span></a></li>
<li><a href="#"><span>Models</span></a></li>
<li><a href="#" aria-current="page"><span>GT-R Spec</span></a></li>
</ol>
</nav>
```
## CSS
```css
.bc-35 {
width: 100%;
min-height: 100vh;
font-family: system-ui,'Segoe UI',sans-serif;
padding: 30px;
background: oklch(0.16 0.015 250);
display: flex;
align-items: center;
justify-content: center;
}
.bc-35 * {
box-sizing: border-box;
}
.bc-35 ol {
display: flex;
gap: 5px;
list-style: none;
margin: 0;
padding: 0;
}
.bc-35 a {
display: block;
padding: 0;
transform: skewX(-20deg);
background: oklch(0.4 0.03 250);
overflow: hidden;
transition: background-color .18s ease;
}
.bc-35 a span {
display: flex;
align-items: center;
height: 40px;
padding: 0 22px;
transform: skewX(20deg);
font: 700 13px/1 system-ui,sans-serif;
letter-spacing: .03em;
color: oklch(0.9 0.01 250);
text-transform: uppercase;
}
.bc-35 li:nth-child(2) a {
background: oklch(0.44 0.04 250);
}
.bc-35 li:nth-child(3) a {
background: oklch(0.48 0.05 250);
}
.bc-35 a:hover {
background: oklch(0.55 0.08 250);
}
.bc-35 li:last-child a {
background: oklch(0.62 0.19 25);
}
.bc-35 li:last-child a:hover {
background: oklch(0.66 0.2 25);
}
.bc-35 a:focus-visible {
outline: none;
}
.bc-35 a:focus-visible span {
outline: 2px solid #fff;
outline-offset: -3px;
}
@media (prefers-reduced-motion: reduce) {
.bc-35 a {
transition: none;
}
}
```
## JavaScript
```js
/* No JavaScript — each block is skewX(-20deg) into a parallelogram; the inner span is skewX(20deg) to keep the label upright. Focus ring rides the un-skewed span. */
```How this works
Each crumb block is skewed with transform:skewX(-20deg), turning the rectangle into a parallelogram whose parallel slanted edges suggest forward motion. Skew, however, distorts everything inside it — so the label is wrapped in an inner span that gets the inverse transform:skewX(20deg), cancelling the tilt so the text stands upright inside the slanted block. This paired skew/un-skew is the entire trick and the classic way to build angular UI without clip-path.
Blocks butt together with a small gap that, because of the skew, reads as a consistent diagonal seam between segments. The palette steps in tone along the trail and the current crumb takes the accent. First and last blocks can keep their outer edges square (by not skewing, or by masking) for a tidy bar boundary. Focus rings ride on the inner (un-skewed) span so they render as upright rectangles, not slanted ones — a small accessibility nicety that keeps the ring legible.
Make it yours
- Skew angle is the attitude dial: -12deg is subtle, -28deg is aggressive; remember to invert it on the inner span.
- Palette steps: tone-down each successive block, accent the current — or go monochrome with one hue.
- Square off the bar ends by leaving the first/last block un-skewed, or clip their outer edge.
- Add a thin bright leading edge (border-inline-start) on each block for a 'lit rim' sporty accent.
Gotchas — read before shipping
- Skew distorts children — you MUST un-skew the inner content span with the inverse angle, or text and icons come out slanted.
- Put the
:focus-visiblering on the un-skewed inner span so the outline is a normal rectangle, not a parallelogram. - Backgrounds/borders skew too; if you want a square outer edge, don't skew the first/last block — handle it explicitly.
- Skewed hit areas are parallelograms — fine for clicks, but keep adequate height so the slanted target stays comfortably tappable.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 111+ | 15.4+ | 113+ | 111+ |
Floor set by oklch() as this demo is written. The core technique itself goes back further — Chrome all.
transform:skewX and the un-skew technique are universally supported. oklch() palette (2023) is the only modern touch. Robust everywhere.