Material Design
Breadcrumb
Fil D Ariane
Navigation
Ripple
Material Icons
Google
Responsive
Html
Snippet
Fil d'Ariane selon les guidelines Material Design avec ripple effect, icônes Material Icons, typographie MD et navigation hiérarchique.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<meta name="copyright" content="AngularForAll" />
<meta name="author" content="AngularForAll" />
<meta name="robots" content="noindex, nofollow" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Cache-Control" content="public, max-age=604800" />
<title>Snippets Breadcrumbtrail Materiel Design 2026 05011630 | AngularForAll</title>
<!-- Material Design Lite CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/material-icons@latest/iconfont/material-icons.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/material-design-lite@1.3.0/material.indigo-pink.min.css">
<!-- Material Design Lite JS -->
<script defer src="https://cdn.jsdelivr.net/npm/material-design-lite@1.3.0/material.min.js"></script>
<style>
/* ============================================================ */
/* Styles personnalisés pour les variantes de Breadcrumb */
/* ============================================================ */
.demo-container {
max-width: 1200px;
margin: 0 auto;
padding: 24px;
}
.breadcrumb-section {
background: white;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1), 0 4px 8px rgba(0,0,0,0.05);
margin-bottom: 24px;
overflow: hidden;
}
/* Variante 1 : Standard Material */
.breadcrumb-standard .mdl-breadcrumb {
display: flex;
align-items: center;
flex-wrap: wrap;
list-style: none;
padding: 16px 24px;
margin: 0;
}
.breadcrumb-standard .mdl-breadcrumb__item {
display: flex;
align-items: center;
animation: slideInRight 0.4s ease-out forwards;
opacity: 0;
}
.breadcrumb-standard .mdl-breadcrumb__item:nth-child(1) { animation-delay: 0.1s; }
.breadcrumb-standard .mdl-breadcrumb__item:nth-child(2) { animation-delay: 0.2s; }
.breadcrumb-standard .mdl-breadcrumb__item:nth-child(3) { animation-delay: 0.3s; }
.breadcrumb-standard .mdl-breadcrumb__item:nth-child(4) { animation-delay: 0.4s; }
.breadcrumb-standard .mdl-breadcrumb__item:nth-child(5) { animation-delay: 0.5s; }
.breadcrumb-standard .mdl-breadcrumb__link {
color: #757575;
text-decoration: none;
font-size: 14px;
font-weight: 400;
transition: color 0.2s ease;
display: flex;
align-items: center;
padding: 4px 8px;
border-radius: 4px;
}
.breadcrumb-standard .mdl-breadcrumb__link:hover {
color: #3f51b5;
background-color: rgba(63, 81, 181, 0.08);
}
.breadcrumb-standard .mdl-breadcrumb__separator {
color: #bdbdbd;
margin: 0 8px;
font-size: 20px;
user-select: none;
}
.breadcrumb-standard .mdl-breadcrumb__current {
color: #3f51b5;
font-weight: 500;
font-size: 14px;
padding: 4px 8px;
}
/* Variante 2 : Compact */
.breadcrumb-compact .mdl-breadcrumb {
display: flex;
align-items: center;
flex-wrap: wrap;
list-style: none;
padding: 12px 24px;
margin: 0;
}
.breadcrumb-compact .mdl-breadcrumb__link {
color: #616161;
text-decoration: none;
font-size: 12px;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.5px;
transition: color 0.2s ease;
padding: 2px 6px;
border-radius: 2px;
}
.breadcrumb-compact .mdl-breadcrumb__link:hover {
color: #ff4081;
background-color: rgba(255, 64, 129, 0.08);
}
.breadcrumb-compact .mdl-breadcrumb__separator {
color: #e0e0e0;
margin: 0 4px;
font-size: 16px;
}
.breadcrumb-compact .mdl-breadcrumb__current {
color: #ff4081;
font-weight: 600;
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
/* Variante 3 : Chips */
.breadcrumb-chips .mdl-breadcrumb {
display: flex;
align-items: center;
flex-wrap: wrap;
list-style: none;
padding: 16px 24px;
margin: 0;
gap: 4px;
}
.breadcrumb-chips .mdl-breadcrumb__chip {
display: inline-flex;
align-items: center;
height: 32px;
padding: 0 12px;
background-color: #e8eaf6;
color: #3f51b5;
border-radius: 16px;
font-size: 13px;
font-weight: 500;
text-decoration: none;
transition: all 0.2s ease;
}
.breadcrumb-chips .mdl-breadcrumb__chip:hover {
background-color: #c5cae9;
box-shadow: 0 2px 4px rgba(0,0,0,0.15);
transform: translateY(-1px);
}
.breadcrumb-chips .mdl-breadcrumb__chip--active {
background-color: #3f51b5;
color: white;
font-weight: 600;
box-shadow: 0 2px 8px rgba(63, 81, 181, 0.4);
}
.breadcrumb-chips .mdl-breadcrumb__separator {
color: #bdbdbd;
margin: 0 2px;
font-size: 18px;
}
/* Variante 4 : Avec icônes */
.breadcrumb-icons .mdl-breadcrumb {
display: flex;
align-items: center;
flex-wrap: wrap;
list-style: none;
padding: 16px 24px;
margin: 0;
}
.breadcrumb-icons .mdl-breadcrumb__link {
color: #546e7a;
text-decoration: none;
font-size: 14px;
display: flex;
align-items: center;
padding: 6px 12px;
border-radius: 4px;
transition: all 0.2s ease;
}
.breadcrumb-icons .mdl-breadcrumb__link:hover {
color: #00897b;
background-color: rgba(0, 137, 123, 0.08);
}
.breadcrumb-icons .mdl-breadcrumb__link .material-icons {
font-size: 18px;
margin-right: 6px;
}
.breadcrumb-icons .mdl-breadcrumb__separator {
color: #cfd8dc;
margin: 0 4px;
}
.breadcrumb-icons .mdl-breadcrumb__current {
display: flex;
align-items: center;
padding: 6px 12px;
color: #00897b;
font-weight: 600;
background-color: #e0f2f1;
border-radius: 4px;
}
.breadcrumb-icons .mdl-breadcrumb__current .material-icons {
font-size: 18px;
margin-right: 6px;
}
/* Variante 5 : FAB style */
.breadcrumb-fab .mdl-breadcrumb {
display: flex;
align-items: center;
flex-wrap: wrap;
list-style: none;
padding: 16px 24px;
margin: 0;
}
.breadcrumb-fab .mdl-breadcrumb__button {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 40px;
height: 40px;
padding: 0 16px;
background-color: #f5f5f5;
color: #616161;
border-radius: 20px;
font-size: 13px;
font-weight: 500;
text-decoration: none;
transition: all 0.2s ease;
box-shadow: 0 1px 3px rgba(0,0,0,0.12);
}
.breadcrumb-fab .mdl-breadcrumb__button:hover {
background-color: #eeeeee;
box-shadow: 0 4px 8px rgba(0,0,0,0.15);
transform: translateY(-2px);
}
.breadcrumb-fab .mdl-breadcrumb__button .material-icons {
font-size: 18px;
margin-right: 4px;
}
.breadcrumb-fab .mdl-breadcrumb__button--active {
background-color: #ff5722;
color: white;
box-shadow: 0 4px 8px rgba(255, 87, 34, 0.4);
}
.breadcrumb-fab .mdl-breadcrumb__separator {
color: #bdbdbd;
margin: 0 8px;
font-weight: 300;
}
/* Variante 6 : Dark theme */
.breadcrumb-dark {
background: #37474f;
}
.breadcrumb-dark .mdl-breadcrumb {
display: flex;
align-items: center;
flex-wrap: wrap;
list-style: none;
padding: 16px 24px;
margin: 0;
}
.breadcrumb-dark .mdl-breadcrumb__link {
color: #90a4ae;
text-decoration: none;
font-size: 14px;
transition: color 0.2s ease;
padding: 4px 8px;
border-radius: 4px;
}
.breadcrumb-dark .mdl-breadcrumb__link:hover {
color: white;
background-color: rgba(255, 255, 255, 0.1);
}
.breadcrumb-dark .mdl-breadcrumb__separator {
color: #546e7a;
margin: 0 8px;
}
.breadcrumb-dark .mdl-breadcrumb__current {
color: #ffd54f;
font-weight: 500;
padding: 4px 8px;
}
/* Animations */
@keyframes slideInRight {
from {
opacity: 0;
transform: translateX(-20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes ripple {
0% { transform: scale(0); opacity: 1; }
100% { transform: scale(2); opacity: 0; }
}
.ripple-effect {
position: relative;
overflow: hidden;
}
.ripple-effect::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: rgba(255, 255, 255, 0.3);
transform: translate(-50%, -50%);
transition: width 0.6s, height 0.6s;
}
.ripple-effect:active::after {
width: 300px;
height: 300px;
}
/* En-tête de section */
.section-header {
display: flex;
align-items: center;
padding: 20px 24px;
border-bottom: 1px solid #e0e0e0;
background: #fafafa;
}
.section-header .material-icons {
font-size: 28px;
margin-right: 16px;
}
/* Responsive */
@media (max-width: 600px) {
.mdl-breadcrumb {
font-size: 12px;
}
.breadcrumb-chips .mdl-breadcrumb {
gap: 8px;
}
.breadcrumb-fab .mdl-breadcrumb__button {
min-width: 36px;
height: 36px;
padding: 0 12px;
font-size: 12px;
}
}
</style>
</head>
<body class="mdl-demo">
<!-- Layout principal Material Design -->
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
<!-- Header -->
<header class="mdl-layout__header">
<div class="mdl-layout__header-row">
<span class="mdl-layout-title">
<i class="material-icons" style="vertical-align: middle;">store</i>
ShopMaterial
</span>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Accueil</a>
<a class="mdl-navigation__link" href="#">Produits</a>
<a class="mdl-navigation__link" href="#">Contact</a>
</nav>
</div>
</header>
<!-- Drawer -->
<div class="mdl-layout__drawer">
<span class="mdl-layout-title">Menu</span>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Accueil</a>
<a class="mdl-navigation__link" href="#">Produits</a>
<a class="mdl-navigation__link" href="#">Catégories</a>
<a class="mdl-navigation__link" href="#">Contact</a>
</nav>
</div>
<!-- Contenu principal -->
<main class="mdl-layout__content">
<div class="demo-container">
<!-- Titre -->
<div style="text-align: center; margin-bottom: 32px;">
<h1 class="mdl-typography--display-1" style="color: #3f51b5; margin-bottom: 8px;">
<i class="material-icons" style="font-size: 48px; vertical-align: middle;">signpost</i>
Breadcrumb Trail
</h1>
<p class="mdl-typography--subhead" style="color: #757575;">
Fil d'Ariane Material Design - 6 Variantes
</p>
</div>
<!-- ============================================================ -->
<!-- VARIANTE 1 : Standard Material -->
<!-- ============================================================ -->
<div class="breadcrumb-section">
<div class="section-header">
<i class="material-icons" style="color: #3f51b5;">chevron_right</i>
<h5 class="mdl-typography--title" style="margin: 0;">Variante 1 : Style Material Standard</h5>
</div>
<div class="breadcrumb-standard">
<nav aria-label="Breadcrumb standard">
<ol class="mdl-breadcrumb">
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">
<i class="material-icons" style="font-size: 18px; margin-right: 4px;">home</i>
Accueil
</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">Produits</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">Électronique</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">Smartphones</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item" aria-current="page">
<span class="mdl-breadcrumb__current">iPhone 15 Pro Max</span>
</li>
</ol>
</nav>
</div>
</div>
<!-- ============================================================ -->
<!-- VARIANTE 2 : Compact -->
<!-- ============================================================ -->
<div class="breadcrumb-section">
<div class="section-header">
<i class="material-icons" style="color: #ff4081;">keyboard_arrow_right</i>
<h5 class="mdl-typography--title" style="margin: 0;">Variante 2 : Style Compact Uppercase</h5>
</div>
<div class="breadcrumb-compact">
<nav aria-label="Breadcrumb compact">
<ol class="mdl-breadcrumb">
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">Accueil</a>
<span class="mdl-breadcrumb__separator">/</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">Mode</a>
<span class="mdl-breadcrumb__separator">/</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">Homme</a>
<span class="mdl-breadcrumb__separator">/</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">Vestes</a>
<span class="mdl-breadcrumb__separator">/</span>
</li>
<li class="mdl-breadcrumb__item" aria-current="page">
<span class="mdl-breadcrumb__current">Cuir Premium</span>
</li>
</ol>
</nav>
</div>
</div>
<!-- ============================================================ -->
<!-- VARIANTE 3 : Chips -->
<!-- ============================================================ -->
<div class="breadcrumb-section">
<div class="section-header">
<i class="material-icons" style="color: #3f51b5;">bubble_chart</i>
<h5 class="mdl-typography--title" style="margin: 0;">Variante 3 : Style Chips / Pillules</h5>
</div>
<div class="breadcrumb-chips">
<nav aria-label="Breadcrumb chips">
<ol class="mdl-breadcrumb">
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__chip ripple-effect">
<i class="material-icons" style="font-size: 16px; margin-right: 4px;">home</i>
Accueil
</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__chip ripple-effect">Gaming</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__chip ripple-effect">Consoles</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item" aria-current="page">
<span class="mdl-breadcrumb__chip mdl-breadcrumb__chip--active">
<i class="material-icons" style="font-size: 16px; margin-right: 4px;">check_circle</i>
PlayStation 5
</span>
</li>
</ol>
</nav>
</div>
</div>
<!-- ============================================================ -->
<!-- VARIANTE 4 : Avec icônes personnalisées -->
<!-- ============================================================ -->
<div class="breadcrumb-section">
<div class="section-header">
<i class="material-icons" style="color: #00897b;">stars</i>
<h5 class="mdl-typography--title" style="margin: 0;">Variante 4 : Icônes Personnalisées</h5>
</div>
<div class="breadcrumb-icons">
<nav aria-label="Breadcrumb icônes">
<ol class="mdl-breadcrumb">
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">
<i class="material-icons">storefront</i>
Boutique
</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">
<i class="material-icons">category</i>
Catégories
</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">
<i class="material-icons">local_offer</i>
Promotions
</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item" aria-current="page">
<span class="mdl-breadcrumb__current">
<i class="material-icons">star</i>
Offre Spéciale
</span>
</li>
</ol>
</nav>
</div>
</div>
<!-- ============================================================ -->
<!-- VARIANTE 5 : FAB Style -->
<!-- ============================================================ -->
<div class="breadcrumb-section">
<div class="section-header">
<i class="material-icons" style="color: #ff5722;">radio_button_checked</i>
<h5 class="mdl-typography--title" style="margin: 0;">Variante 5 : Style Boutons Flottants</h5>
</div>
<div class="breadcrumb-fab">
<nav aria-label="Breadcrumb fab">
<ol class="mdl-breadcrumb">
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__button ripple-effect">
<i class="material-icons">home</i>
Accueil
</a>
<span class="mdl-breadcrumb__separator">→</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__button ripple-effect">
<i class="material-icons">devices</i>
Tech
</a>
<span class="mdl-breadcrumb__separator">→</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__button ripple-effect">
<i class="material-icons">laptop</i>
Ordinateurs
</a>
<span class="mdl-breadcrumb__separator">→</span>
</li>
<li class="mdl-breadcrumb__item" aria-current="page">
<span class="mdl-breadcrumb__button mdl-breadcrumb__button--active">
<i class="material-icons">check</i>
MacBook Pro
</span>
</li>
</ol>
</nav>
</div>
</div>
<!-- ============================================================ -->
<!-- VARIANTE 6 : Dark Theme -->
<!-- ============================================================ -->
<div class="breadcrumb-section breadcrumb-dark">
<div class="section-header" style="background: #263238; border-bottom-color: #37474f;">
<i class="material-icons" style="color: #ffd54f;">nights_stay</i>
<h5 class="mdl-typography--title" style="margin: 0; color: white;">Variante 6 : Thème Sombre</h5>
</div>
<div class="breadcrumb-dark">
<nav aria-label="Breadcrumb dark">
<ol class="mdl-breadcrumb">
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">
<i class="material-icons" style="font-size: 16px; vertical-align: middle;">home</i>
Accueil
</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">Collections</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item">
<a href="#" class="mdl-breadcrumb__link">Hiver 2024</a>
<span class="mdl-breadcrumb__separator">›</span>
</li>
<li class="mdl-breadcrumb__item" aria-current="page">
<span class="mdl-breadcrumb__current">
<i class="material-icons" style="font-size: 16px; vertical-align: middle;">whatshot</i>
Collection Capsule
</span>
</li>
</ol>
</nav>
</div>
</div>
</div>
<!-- Footer -->
<footer class="mdl-mini-footer" style="margin-top: 48px;">
<div class="mdl-mini-footer__left-section">
<div class="mdl-logo">ShopMaterial © 2024</div>
</div>
</footer>
</main>
</div>
<script>
// ============================================================
// BREADCRUMB TRAIL - Interactions JavaScript
// ============================================================
document.addEventListener('DOMContentLoaded', function() {
// Gestion des clics sur les liens breadcrumb
document.querySelectorAll('nav[aria-label] a').forEach(link => {
link.addEventListener('click', function(e) {
e.preventDefault();
// Effet ripple Material Design
createRipple(e, this);
// Feedback dans la console
const text = this.textContent.trim();
console.log('Navigation Breadcrumb →', text);
// Animation de clic
this.style.transform = 'scale(0.96)';
setTimeout(() => {
this.style.transform = 'scale(1)';
}, 150);
});
});
// Empêcher le clic sur les éléments actifs
document.querySelectorAll('[aria-current="page"]').forEach(item => {
item.style.cursor = 'default';
item.addEventListener('click', function(e) {
e.preventDefault();
});
});
// Ajouter des tooltips sur les liens avec icônes
document.querySelectorAll('.breadcrumb-icons .mdl-breadcrumb__link, .breadcrumb-fab .mdl-breadcrumb__button').forEach(link => {
link.addEventListener('mouseenter', function() {
this.style.transform = 'translateY(-1px)';
});
link.addEventListener('mouseleave', function() {
this.style.transform = 'translateY(0)';
});
});
});
// Fonction d'effet ripple Material Design
function createRipple(event, element) {
const ripple = document.createElement('span');
const rect = element.getBoundingClientRect();
const size = Math.max(rect.width, rect.height);
const x = event.clientX - rect.left - size / 2;
const y = event.clientY - rect.top - size / 2;
ripple.style.width = ripple.style.height = size + 'px';
ripple.style.left = x + 'px';
ripple.style.top = y + 'px';
ripple.style.position = 'absolute';
ripple.style.borderRadius = '50%';
ripple.style.background = 'rgba(63, 81, 181, 0.3)';
ripple.style.transform = 'scale(0)';
ripple.style.animation = 'ripple 0.6s ease-out';
ripple.style.pointerEvents = 'none';
element.style.position = 'relative';
element.style.overflow = 'hidden';
element.appendChild(ripple);
ripple.addEventListener('animationend', () => {
ripple.remove();
});
}
</script>
</body>
</html>
Télécharger le fichier source