Tailwind Css
Timeline
Vertical
Etapes
Responsive
Template
Javascript
Composant timeline verticale Tailwind CSS avec Inter font, animations fluides, thème utility-first et design épuré moderne.
<!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 Timeline Tailwindcss 2026 05050250 | AngularForAll</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap');
* { font-family: 'Inter', sans-serif; }
body {
background: #faf9fc;
background-image: radial-gradient(ellipse at 10% 20%, rgba(120, 80, 240, 0.05) 0%, transparent 50%),
radial-gradient(ellipse at 90% 80%, rgba(236, 72, 153, 0.05) 0%, transparent 50%);
}
.timeline-line {
position: absolute;
left: 50%;
top: 0;
bottom: 0;
width: 3px;
background: linear-gradient(180deg, #7c3aed, #ec4899);
transform: translateX(-50%);
border-radius: 12px;
box-shadow: 0 0 20px rgba(124, 58, 237, 0.15);
}
.timeline-dot {
position: absolute;
left: 50%;
transform: translateX(-50%);
width: 18px;
height: 18px;
background: white;
border: 3px solid #7c3aed;
border-radius: 50%;
box-shadow: 0 0 0 5px rgba(124, 58, 237, 0.1), 0 4px 12px rgba(0,0,0,0.08);
transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
z-index: 2;
}
.timeline-dot:hover {
transform: translateX(-50%) scale(1.2);
border-color: #ec4899;
box-shadow: 0 0 0 8px rgba(236, 72, 153, 0.15);
}
.timeline-dot i {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 0.5rem;
color: #7c3aed;
transition: color 0.3s;
}
.timeline-card {
background: rgba(255, 255, 255, 0.85);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.6);
border-radius: 20px;
padding: 1.75rem 2rem;
box-shadow: 0 12px 40px -12px rgba(0, 0, 0, 0.08);
transition: all 0.3s ease;
position: relative;
width: 100%;
}
.timeline-card:hover {
transform: translateY(-6px) scale(1.01);
box-shadow: 0 24px 50px -16px rgba(124, 58, 237, 0.12);
background: rgba(255, 255, 255, 0.95);
border-color: rgba(124, 58, 237, 0.15);
}
.timeline-date {
font-size: 0.8rem;
font-weight: 600;
letter-spacing: 0.03em;
color: #6b7280;
background: rgba(243, 244, 246, 0.7);
backdrop-filter: blur(4px);
display: inline-block;
padding: 0.2rem 1.2rem;
border-radius: 40px;
border: 1px solid rgba(255, 255, 255, 0.5);
margin-bottom: 0.75rem;
}
.timeline-title {
font-weight: 700;
font-size: 1.3rem;
color: #1f2937;
margin-bottom: 0.5rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.timeline-desc {
color: #4b5563;
font-weight: 400;
font-size: 0.95rem;
line-height: 1.6;
margin-bottom: 0.75rem;
}
.timeline-tag {
display: inline-flex;
align-items: center;
gap: 0.4rem;
background: linear-gradient(135deg, #f3e8ff, #fce7f3);
color: #7c3aed;
font-size: 0.7rem;
font-weight: 600;
padding: 0.3rem 1.2rem;
border-radius: 40px;
letter-spacing: 0.02em;
text-transform: uppercase;
border: 1px solid rgba(255, 255, 255, 0.4);
}
/* Responsive : mobile = ligne à gauche */
@media (max-width: 767px) {
.timeline-line {
left: 1.8rem;
transform: none;
}
.timeline-dot {
left: 1.8rem;
transform: translateX(-50%);
}
.timeline-dot:hover {
transform: translateX(-50%) scale(1.2);
}
.timeline-card {
width: calc(100% - 4rem);
margin-left: 4.2rem;
padding: 1.5rem 1.5rem 1.5rem 2rem;
}
.timeline-date {
font-size: 0.75rem;
padding: 0.15rem 1rem;
}
}
/* Desktop : alternance gauche/droite avec décalage */
@media (min-width: 768px) {
.timeline-item {
display: flex;
align-items: flex-start;
justify-content: space-between;
margin-bottom: 3.5rem;
position: relative;
}
.timeline-item .card-wrapper {
width: 42%;
position: relative;
}
.timeline-item:nth-child(odd) .card-wrapper {
margin-right: auto;
text-align: right;
}
.timeline-item:nth-child(even) .card-wrapper {
margin-left: auto;
text-align: left;
}
/* Ajustement du padding selon l'alignement */
.timeline-item:nth-child(odd) .timeline-card {
padding: 1.75rem 2rem 1.75rem 2.5rem;
border-radius: 20px 20px 20px 8px;
}
.timeline-item:nth-child(even) .timeline-card {
padding: 1.75rem 2.5rem 1.75rem 2rem;
border-radius: 20px 20px 8px 20px;
}
.timeline-item:nth-child(odd) .timeline-title {
justify-content: flex-end;
}
.timeline-item:nth-child(even) .timeline-title {
justify-content: flex-start;
}
/* Icône décorative */
.timeline-icon {
font-size: 1.4rem;
color: #7c3aed;
opacity: 0.7;
}
}
/* Ajustement très grands écrans */
@media (min-width: 1400px) {
.timeline-card {
padding: 2rem 2.8rem;
}
}
.footer-credit {
margin-top: 3rem;
color: #6b7280;
font-weight: 400;
font-size: 0.9rem;
}
.footer-credit a {
color: #7c3aed;
text-decoration: none;
font-weight: 500;
transition: color 0.2s;
}
.footer-credit a:hover {
color: #ec4899;
}
.glass-tag {
background: rgba(255, 255, 255, 0.4);
backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.6);
padding: 0.3rem 1.2rem;
border-radius: 40px;
color: #4b5563;
font-size: 0.75rem;
font-weight: 500;
}
.icon-bg {
display: inline-flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
background: linear-gradient(135deg, rgba(124, 58, 237, 0.08), rgba(236, 72, 153, 0.08));
border-radius: 12px;
color: #7c3aed;
font-size: 1.1rem;
}
</style>
</head>
<body>
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
<!-- En-tête -->
<div class="text-center mb-12">
<div class="inline-flex items-center gap-2 px-4 py-2 rounded-full bg-white/60 backdrop-blur-sm border border-white/60 shadow-sm mb-4">
<i class="fa-regular fa-clock text-purple-600"></i>
<span class="text-sm font-medium text-gray-700">Timeline · Tailwind CSS</span>
</div>
<h1 class="text-4xl md:text-5xl font-extrabold text-gray-900 tracking-tight">
<span class="bg-gradient-to-r from-purple-600 to-pink-500 bg-clip-text text-transparent">Parcours</span> & innovation
</h1>
<p class="text-gray-500 text-lg mt-2 max-w-2xl mx-auto font-light">
Une frise chronologique moderne, épurée et entièrement responsive.
</p>
<div class="flex justify-center gap-4 mt-4 flex-wrap">
<span class="glass-tag"><i class="fa-regular fa-circle-check text-purple-500 mr-1"></i> Interactif</span>
<span class="glass-tag"><i class="fa-regular fa-mobile-button text-pink-500 mr-1"></i> Mobile first</span>
<span class="glass-tag"><i class="fa-regular fa-gem text-purple-500 mr-1"></i> Design moderne</span>
</div>
</div>
<!-- TIMELINE -->
<div class="relative timeline-container">
<!-- ligne verticale centrale -->
<div class="timeline-line"></div>
<!-- Élément 1 -->
<div class="timeline-item">
<div class="card-wrapper">
<div class="timeline-card">
<div class="flex items-center gap-2 mb-1" style="justify-content: inherit;">
<span class="timeline-date"><i class="fa-regular fa-calendar mr-1"></i> 2019 — 2021</span>
</div>
<h4 class="timeline-title">
<span class="icon-bg"><i class="fa-regular fa-lightbulb"></i></span>
<span>Premières idées</span>
</h4>
<p class="timeline-desc">
Exploration des concepts et validation terrain.<br>
<span class="text-gray-400 text-sm">Prototypage, user tests & itérations.</span>
</p>
<span class="timeline-tag"><i class="fa-regular fa-compass"></i> Exploration</span>
</div>
</div>
<div class="timeline-dot">
<i class="fa-regular fa-star"></i>
</div>
</div>
<!-- Élément 2 -->
<div class="timeline-item">
<div class="card-wrapper">
<div class="timeline-card">
<div class="flex items-center gap-2 mb-1" style="justify-content: inherit;">
<span class="timeline-date"><i class="fa-regular fa-calendar mr-1"></i> 2022 — 2023</span>
</div>
<h4 class="timeline-title">
<span class="icon-bg"><i class="fa-regular fa-rocket"></i></span>
<span>Accélération</span>
</h4>
<p class="timeline-desc">
Lancement officiel & premières traction.<br>
<span class="text-gray-400 text-sm">+10k utilisateurs, partenariats stratégiques.</span>
</p>
<span class="timeline-tag"><i class="fa-regular fa-chart-line"></i> Scale</span>
</div>
</div>
<div class="timeline-dot">
<i class="fa-regular fa-arrow-up-right-from-square"></i>
</div>
</div>
<!-- Élément 3 -->
<div class="timeline-item">
<div class="card-wrapper">
<div class="timeline-card">
<div class="flex items-center gap-2 mb-1" style="justify-content: inherit;">
<span class="timeline-date"><i class="fa-regular fa-calendar mr-1"></i> 2024 — 2025</span>
</div>
<h4 class="timeline-title">
<span class="icon-bg"><i class="fa-regular fa-cubes"></i></span>
<span>Expansion</span>
</h4>
<p class="timeline-desc">
Refonte globale & déploiement international.<br>
<span class="text-gray-400 text-sm">Nouveaux marchés, équipe de 50+ personnes.</span>
</p>
<span class="timeline-tag"><i class="fa-regular fa-globe"></i> Global</span>
</div>
</div>
<div class="timeline-dot">
<i class="fa-regular fa-globe"></i>
</div>
</div>
<!-- Élément 4 -->
<div class="timeline-item">
<div class="card-wrapper">
<div class="timeline-card">
<div class="flex items-center gap-2 mb-1" style="justify-content: inherit;">
<span class="timeline-date"><i class="fa-regular fa-calendar mr-1"></i> 2026 — futur</span>
</div>
<h4 class="timeline-title">
<span class="icon-bg"><i class="fa-regular fa-brain"></i></span>
<span>Innovation</span>
</h4>
<p class="timeline-desc">
Intelligence artificielle & expérience immersive.<br>
<span class="text-gray-400 text-sm">R&D, nouvelles frontières technologiques.</span>
</p>
<span class="timeline-tag"><i class="fa-regular fa-microchip"></i> Next gen</span>
</div>
</div>
<div class="timeline-dot">
<i class="fa-regular fa-microchip"></i>
</div>
</div>
</div>
<!-- footer -->
<div class="text-center mt-12 footer-credit">
<span class="inline-block px-5 py-2 rounded-full bg-white/60 backdrop-blur-sm border border-white/60 shadow-sm">
<i class="fa-regular fa-arrow-right mr-1 text-purple-500"></i>
Timeline moderne • <a href="#" class="hover:text-pink-500">Tailwind CSS</a>
</span>
</div>
</div>
<!-- Aucun JS requis pour l'interactivité (CSS pur) -->
</body>
</html>
Télécharger le fichier source