Breadcrumb Component
Breadcrumb Component: Breadcrumbs show users their current location within a website's hierarchy and provide a way to navigate back to parent pages.
Live Examples
1. Basic Breadcrumb
Example Preview
2. Breadcrumb with Divider
Example Preview
3. Responsive Breadcrumb
Example Preview - Resize browser to see responsive behavior
4. Breadcrumb with Dropdown
Example Preview
5. Breadcrumb Styles
Example Preview
Default Style:
With Background:
Centered Breadcrumb:
Right Aligned Breadcrumb:
Breadcrumb Classes Reference
Core Classes
| Class | Description | Example |
|---|---|---|
.uk-breadcrumb | Main breadcrumb container | <ul class="uk-breadcrumb"> |
.uk-breadcrumb-divider | Adds slash divider between items | <ul class="uk-breadcrumb uk-breadcrumb-divider"> |
.uk-disabled | Disables a breadcrumb item | <li class="uk-disabled"> |
Alignment Classes
| Class | Description | Usage |
|---|---|---|
.uk-flex-left | Left align (default) | uk-breadcrumb uk-flex-left |
.uk-flex-center | Center align | uk-breadcrumb uk-flex-center |
.uk-flex-right | Right align | uk-breadcrumb uk-flex-right |
.uk-flex-between | Space between items | uk-breadcrumb uk-flex-between |
Complete Example
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>E-commerce Breadcrumb Demo</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/uikit@3.19.2/dist/css/uikit.min.css" />
<style>
body { padding: 20px; background: #f8f9fa; }
.demo-container { max-width: 1200px; margin: 0 auto; }
.product-page { background: white; padding: 30px; border-radius: 10px; }
.breadcrumb-nav { margin-bottom: 30px; }
</style>
</head>
<body>
<div class="demo-container">
<!-- E-commerce Product Page -->
<div class="product-page">
<!-- Main Breadcrumb -->
<div class="breadcrumb-nav">
<ul class="uk-breadcrumb">
<li><a href="#"><span uk-icon="icon: home"></span> Home</a></li>
<li>
<a href="#">Electronics</a>
<div uk-dropdown="mode: click">
<div class="uk-dropdown-grid uk-child-width-1-3" uk-grid>
<div>
<ul class="uk-nav uk-dropdown-nav">
<li class="uk-nav-header">Computers</li>
<li><a href="#"><span uk-icon="icon: laptop"></span> Laptops</a></li>
<li><a href="#"><span uk-icon="icon: desktop"></span> Desktops</a></li>
<li><a href="#"><span uk-icon="icon: tablet"></span> Tablets</a></li>
</ul>
</div>
<div>
<ul class="uk-nav uk-dropdown-nav">
<li class="uk-nav-header">Mobile</li>
<li><a href="#"><span uk-icon="icon: phone"></span> Smartphones</a></li>
<li><a href="#"><span uk-icon="icon: tablet"></span> Tablets</a></li>
<li><a href="#"><span uk-icon="icon: smartwatch"></span> Smartwatches</a></li>
</ul>
</div>
<div>
<ul class="uk-nav uk-dropdown-nav">
<li class="uk-nav-header">Home</li>
<li><a href="#"><span uk-icon="icon: tv"></span> TVs</a></li>
<li><a href="#"><span uk-icon="icon: music"></span> Audio</a></li>
<li><a href="#"><span uk-icon="icon: camera"></span> Cameras</a></li>
</ul>
</div>
</div>
</div>
</li>
<li>
<a href="#">Smartphones</a>
<div uk-dropdown="mode: click">
<ul class="uk-nav uk-dropdown-nav">
<li><a href="#"><span uk-icon="icon: apple"></span> iPhone</a></li>
<li><a href="#"><span uk-icon="icon: android"></span> Android</a></li>
<li><a href="#"><span uk-icon="icon: refresh"></span> Refurbished</a></li>
<li class="uk-nav-divider"></li>
<li><a href="#"><span uk-icon="icon: bolt"></span> 5G Phones</a></li>
<li><a href="#"><span uk-icon="icon: camera"></span> Best Camera</a></li>
</ul>
</div>
</li>
<li>
<a href="#">Apple</a>
<div uk-dropdown="mode: click">
<ul class="uk-nav uk-dropdown-nav">
<li class="uk-nav-header">iPhone Series</li>
<li><a href="#">iPhone 15 Series</a></li>
<li><a href="#">iPhone 14 Series</a></li>
<li><a href="#">iPhone 13 Series</a></li>
<li class="uk-nav-divider"></li>
<li class="uk-nav-header">Other Products</li>
<li><a href="#">iPad</a></li>
<li><a href="#">MacBook</a></li>
<li><a href="#">Apple Watch</a></li>
</ul>
</div>
</li>
<li><span>iPhone 15 Pro Max</span></li>
</ul>
</div>
<!-- Product Details -->
<div class="uk-grid-large" uk-grid>
<div class="uk-width-1-2@m">
<div class="uk-card uk-card-default">
<div class="uk-card-media-top">
<img src="iphone-15-pro-max.jpg" alt="iPhone 15 Pro Max">
</div>
<div class="uk-card-body">
<div class="uk-flex uk-flex-between uk-flex-middle">
<div>
<span class="uk-badge uk-badge-success">In Stock</span>
<span class="uk-badge uk-badge-warning">Free Shipping</span>
</div>
<div>
<span class="uk-badge uk-badge-danger">BEST SELLER</span>
</div>
</div>
</div>
</div>
</div>
<div class="uk-width-1-2@m">
<h1 class="uk-heading-primary">iPhone 15 Pro Max</h1>
<p class="uk-text-lead">Titanium. So strong. So light. So Pro.</p>
<!-- Product Specs Breadcrumb -->
<div class="uk-margin-medium">
<ul class="uk-breadcrumb uk-breadcrumb-divider">
<li><span class="uk-text-bold">Storage:</span></li>
<li><a href="#" class="uk-button uk-button-default uk-button-small">256GB</a></li>
<li><a href="#" class="uk-button uk-button-primary uk-button-small">512GB</a></li>
<li><a href="#" class="uk-button uk-button-default uk-button-small">1TB</a></li>
</ul>
</div>
<div class="uk-margin-medium">
<ul class="uk-breadcrumb uk-breadcrumb-divider">
<li><span class="uk-text-bold">Color:</span></li>
<li><a href="#" class="uk-button uk-button-default uk-button-small">Black Titanium</a></li>
<li><a href="#" class="uk-button uk-button-default uk-button-small">White Titanium</a></li>
<li><a href="#" class="uk-button uk-button-default uk-button-small">Blue Titanium</a></li>
<li><a href="#" class="uk-button uk-button-primary uk-button-small">Natural Titanium</a></li>
</ul>
</div>
<div class="uk-card uk-card-secondary uk-card-body">
<div class="uk-flex uk-flex-between uk-flex-middle">
<div>
<h3 class="uk-card-title uk-margin-remove">$1,199.00</h3>
<p class="uk-text-meta uk-margin-remove">Free shipping & returns</p>
</div>
<div>
<button class="uk-button uk-button-primary uk-button-large">
<span uk-icon="icon: cart"></span> Add to Cart
</button>
</div>
</div>
</div>
</div>
</div>
<!-- Related Categories -->
<div class="uk-margin-xlarge-top">
<h3>Related Categories</h3>
<div class="uk-grid-small uk-child-width-1-4@m" uk-grid>
<div>
<div class="uk-card uk-card-default uk-card-body uk-text-center">
<span uk-icon="icon: smartphone; ratio: 2"></span>
<h4 class="uk-card-title">Accessories</h4>
<ul class="uk-breadcrumb uk-flex-center">
<li><a href="#" class="uk-text-small">Cases</a></li>
<li><a href="#" class="uk-text-small">Chargers</a></li>
<li><a href="#" class="uk-text-small">Headphones</a></li>
</ul>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body uk-text-center">
<span uk-icon="icon: credit-card; ratio: 2"></span>
<h4 class="uk-card-title">Payment</h4>
<ul class="uk-breadcrumb uk-flex-center">
<li><a href="#" class="uk-text-small">Monthly</a></li>
<li><a href="#" class="uk-text-small">Carrier</a></li>
<li><a href="#" class="uk-text-small">Trade-in</a></li>
</ul>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body uk-text-center">
<span uk-icon="icon: shield; ratio: 2"></span>
<h4 class="uk-card-title">Protection</h4>
<ul class="uk-breadcrumb uk-flex-center">
<li><a href="#" class="uk-text-small">AppleCare+</a></li>
<li><a href="#" class="uk-text-small">Insurance</a></li>
<li><a href="#" class="uk-text-small">Warranty</a></li>
</ul>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body uk-text-center">
<span uk-icon="icon: truck; ratio: 2"></span>
<h4 class="uk-card-title">Delivery</h4>
<ul class="uk-breadcrumb uk-flex-center">
<li><a href="#" class="uk-text-small">Same-day</a></li>
<li><a href="#" class="uk-text-small">2-day</a></li>
<li><a href="#" class="uk-text-small">Store Pickup</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<!-- Admin Panel Example -->
<div class="uk-margin-xlarge-top">
<h2>Admin Panel Breadcrumb</h2>
<div class="uk-card uk-card-default">
<div class="uk-card-header">
<div class="uk-grid-small uk-flex-middle" uk-grid>
<div class="uk-width-expand">
<ul class="uk-breadcrumb uk-margin-remove">
<li><a href="#"><span uk-icon="icon: settings"></span> Admin Panel</a></li>
<li><a href="#">Content Management</a></li>
<li><a href="#">Articles</a></li>
<li class="uk-visible@m"><a href="#">Edit</a></li>
<li><span>Article #1234</span></li>
</ul>
</div>
<div class="uk-width-auto">
<button class="uk-button uk-button-primary uk-button-small">
<span uk-icon="icon: file-edit"></span> Save Changes
</button>
<button class="uk-button uk-button-default uk-button-small">
<span uk-icon="icon: arrow-left"></span> Back
</button>
</div>
</div>
</div>
<div class="uk-card-body">
<div class="uk-alert-primary" uk-alert>
<p>You are editing: <strong>"Getting Started with UIKit"</strong></p>
</div>
<!-- Article editor would go here -->
</div>
<div class="uk-card-footer">
<ul class="uk-breadcrumb uk-flex-between">
<li>
<a href="#" class="uk-text-small">
<span uk-icon="icon: history"></span> Revision History
</a>
</li>
<li>
<a href="#" class="uk-text-small">
<span uk-icon="icon: users"></span> Collaborators
</a>
</li>
<li>
<a href="#" class="uk-text-small">
<span uk-icon="icon: download"></span> Export
</a>
</li>
<li>
<a href="#" class="uk-text-small">
<span uk-icon="icon: trash"></span> Move to Trash
</a>
</li>
</ul>
</div>
</div>
</div>
<!-- File System Example -->
<div class="uk-margin-xlarge-top">
<h2>File System Navigation</h2>
<div class="uk-card uk-card-default">
<div class="uk-card-header">
<ul class="uk-breadcrumb" uk-breadcrumb="divider: /">
<li><a href="#"><span uk-icon="icon: folder"></span> My Computer</a></li>
<li><a href="#"><span uk-icon="icon: hard-drive"></span> Local Disk (C:)</a></li>
<li><a href="#"><span uk-icon="icon: folder"></span> Users</a></li>
<li><a href="#"><span uk-icon="icon: user"></span> JohnDoe</a></li>
<li><a href="#"><span uk-icon="icon: folder"></span> Documents</a></li>
<li><a href="#"><span uk-icon="icon: folder"></span> Projects</a></li>
<li><a href="#"><span uk-icon="icon: folder"></span> Web Development</a></li>
<li><span>UIKit Project</span></li>
</ul>
</div>
<div class="uk-card-body">
<div class="uk-grid-small uk-child-width-1-6@m" uk-grid>
<div class="uk-text-center">
<span uk-icon="icon: folder; ratio: 2"></span>
<div class="uk-text-small">src</div>
</div>
<div class="uk-text-center">
<span uk-icon="icon: folder; ratio: 2"></span>
<div class="uk-text-small">public</div>
</div>
<div class="uk-text-center">
<span uk-icon="icon: file-text; ratio: 2"></span>
<div class="uk-text-small">README.md</div>
</div>
<div class="uk-text-center">
<span uk-icon="icon: settings; ratio: 2"></span>
<div class="uk-text-small">package.json</div>
</div>
<div class="uk-text-center">
<span uk-icon="icon: git-branch; ratio: 2"></span>
<div class="uk-text-small">.gitignore</div>
</div>
<div class="uk-text-center">
<span uk-icon="icon: image; ratio: 2"></span>
<div class="uk-text-small">assets</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- UIKit JS -->
<script src="https://cdn.jsdelivr.net/npm/uikit@3.19.2/dist/js/uikit.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/uikit@3.19.2/dist/js/uikit-icons.min.js"></script>
</body>
</html>JavaScript API
Breadcrumb Initialization:
// Initialize breadcrumb with options
UIkit.breadcrumb(element, {
divider: '>',
// Other options...
});
// Get breadcrumb instance
const breadcrumb = UIkit.breadcrumb('#myBreadcrumb');
// Update breadcrumb dynamically
function updateBreadcrumb(items) {
const breadcrumb = document.getElementById('myBreadcrumb');
breadcrumb.innerHTML = '';
items.forEach((item, index) => {
const li = document.createElement('li');
if (index === items.length - 1) {
li.innerHTML = `<span>${item.name}</span>`;
} else {
li.innerHTML = `<a href="${item.url}">${item.name}</a>`;
}
breadcrumb.appendChild(li);
});
}
// Example usage
const navItems = [
{ name: 'Home', url: '/' },
{ name: 'Products', url: '/products' },
{ name: 'Electronics', url: '/products/electronics' },
{ name: 'Current Page', url: null }
];
updateBreadcrumb(navItems);Dynamic Breadcrumb Example:
<!-- HTML -->
<ul id="dynamicBreadcrumb" class="uk-breadcrumb"></ul>
<button onclick="goBack()">Go Back</button>
<button onclick="goForward()">Go Forward</button>
<!-- JavaScript -->
<script>
let history = ['Home'];
let currentIndex = 0;
function updateBreadcrumb() {
const breadcrumb = document.getElementById('dynamicBreadcrumb');
breadcrumb.innerHTML = '';
history.forEach((item, index) => {
const li = document.createElement('li');
if (index === currentIndex) {
li.innerHTML = `<span class="uk-text-bold">${item}</span>`;
} else {
li.innerHTML = `<a href="#" onclick="navigateTo(${index})">${item}</a>`;
}
breadcrumb.appendChild(li);
});
}
function navigateTo(index) {
currentIndex = index;
updateBreadcrumb();
}
function goBack() {
if (currentIndex > 0) {
currentIndex--;
updateBreadcrumb();
}
}
function goForward() {
if (currentIndex < history.length - 1) {
currentIndex++;
updateBreadcrumb();
}
}
function addPage(pageName) {
// Remove everything after current index
history = history.slice(0, currentIndex + 1);
history.push(pageName);
currentIndex = history.length - 1;
updateBreadcrumb();
}
// Initialize
updateBreadcrumb();
</script>Custom Styling
/* Custom Breadcrumb Styles */
.uk-breadcrumb-custom {
background: #f8f9fa;
padding: 15px;
border-radius: 8px;
border-left: 4px solid #1e87f0;
}
.uk-breadcrumb-custom li a {
color: #333;
font-weight: 500;
transition: color 0.3s;
}
.uk-breadcrumb-custom li a:hover {
color: #1e87f0;
text-decoration: none;
}
.uk-breadcrumb-custom li:not(:last-child)::after {
content: '›';
margin: 0 10px;
color: #999;
}
.uk-breadcrumb-custom li.uk-disabled a {
color: #999;
cursor: not-allowed;
}
.uk-breadcrumb-custom li:last-child span {
color: #1e87f0;
font-weight: bold;
}
/* Dark Theme Breadcrumb */
.uk-breadcrumb-dark {
background: #333;
color: white;
}
.uk-breadcrumb-dark li a {
color: #ccc;
}
.uk-breadcrumb-dark li a:hover {
color: white;
}
.uk-breadcrumb-dark li:not(:last-child)::after {
color: #666;
}
/* Gradient Breadcrumb */
.uk-breadcrumb-gradient {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
.uk-breadcrumb-gradient li a {
color: white;
}
.uk-breadcrumb-gradient li a:hover {
color: #e3e3e3;
}
/* Responsive Breadcrumb with Truncation */
@media (max-width: 768px) {
.uk-breadcrumb-responsive li:nth-child(n+3):not(:last-child) {
display: none;
}
.uk-breadcrumb-responsive li:nth-child(2)::before {
content: '...';
margin-right: 10px;
}
}
/* Usage in HTML */
<ul class="uk-breadcrumb uk-breadcrumb-custom">
<li><a href="#">Home</a></li>
<li><a href="#">Products</a></li>
<li><span>Current</span></li>
</ul>Best Practices for Breadcrumbs:
- Use breadcrumbs for websites with deep hierarchy (3+ levels)
- Always start with the homepage as the first item
- The last item should represent the current page (non-clickable)
- Use chevrons (>) or slashes (/) as separators, not both
- Keep breadcrumb labels short but descriptive
- Make breadcrumbs responsive - consider truncation on mobile
- Ensure proper contrast for accessibility
- Include breadcrumbs in your site's navigation schema
- Test breadcrumb functionality on all device sizes
- Consider using dropdowns for categories with many sub-items