DevPlatform
Home
Components
Search
Submit
Earn
Login
Sign Up Free
CSS Neon Timeline - Preview | DevPlatform
DevPlatform
Categories
Accordion
Animation
Box Shadow
Button
Card
Footer
Form
Gallery
Hero Section
Inputs
Loader
Marquee
Modal
Modules
Navbar
Progress Bar
Radio Buttons
Search-Bar
Sections
Slider
Tab
Timeline
Toggle
CSS Neon Timeline
jitesh208
Jan 28, 2026
4
0
Share
Live Preview
Refresh
Live Editor
HTML
CSS
JS
HTML
CSS
JavaScript
1
<div class="scanline"></div> <div class="container"> <h1 class="title">Cyber Timeline</h1> <div class="timeline"> <!-- Step 1 - Completed --> <div class="step step-1"> <div class="step-label">Step 01</div> <div class="step-node"> ✓ </div> <h3 class="step-title">Initialize</h3> <p class="step-description">System activated and ready for deployment</p> </div> <!-- Step 2 - Active --> <div class="step step-2"> <div class="step-label">Step 02</div> <div class="step-node"> <div class="particle"></div> <div class="particle"></div> <div class="particle"></div> ⚡ </div> <h3 class="step-title">Processing</h3> <p class="step-description">Neural network analyzing data patterns</p> </div> </div> </div>
1
* { margin: 0; padding: 0; box-sizing: border-box; } body { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: #0a0e27; font-family: 'Orbitron', monospace; padding: 20px; position: relative; overflow: hidden; } /* Animated grid background */ body::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(rgba(0, 255, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 255, 255, 0.03) 1px, transparent 1px); background-size: 50px 50px; animation: grid-scroll 20s linear infinite; pointer-events: none; } @keyframes grid-scroll { 0% { transform: translate(0, 0); } 100% { transform: translate(50px, 50px); } } /* Glowing orbs in background */ body::after { content: ''; position: absolute; width: 300px; height: 300px; background: radial-gradient(circle, rgba(0, 255, 255, 0.3), transparent 70%); border-radius: 50%; top: 20%; left: 15%; filter: blur(60px); animation: float-orb 8s ease-in-out infinite; } @keyframes float-orb { 0%, 100% { transform: translate(0, 0) scale(1); } 50% { transform: translate(30px, -30px) scale(1.1); } } .container { max-width: 900px; width: 100%; z-index: 1; } .title { text-align: center; font-size: 2.5em; font-weight: 900; margin-bottom: 60px; color: #fff; text-transform: uppercase; letter-spacing: 4px; text-shadow: 0 0 10px #00ffff, 0 0 20px #00ffff, 0 0 30px #00ffff, 0 0 40px #00ffff; animation: neon-flicker 1.5s ease-in-out infinite alternate; } @keyframes neon-flicker { 0%, 19%, 21%, 23%, 25%, 54%, 56%, 100% { text-shadow: 0 0 10px #00ffff, 0 0 20px #00ffff, 0 0 30px #00ffff, 0 0 40px #00ffff; } 20%, 24%, 55% { text-shadow: none; } } /* Timeline container */ .timeline { display: flex; align-items: center; justify-content: center; gap: 150px; position: relative; padding: 40px 20px; } /* Connecting line */ .timeline::before { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 300px; height: 4px; background: rgba(0, 255, 255, 0.2); box-shadow: 0 0 5px rgba(0, 255, 255, 0.3), inset 0 0 5px rgba(0, 255, 255, 0.2); } /* Animated progress line */ .timeline::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 0; height: 4px; background: linear-gradient(90deg, #00ffff, #ff00ff); box-shadow: 0 0 10px #00ffff, 0 0 20px #00ffff, 0 0 30px #ff00ff; animation: fill-progress 3s ease-out forwards, progress-glow 3s ease-in-out infinite; z-index: 1; } @keyframes fill-progress { from { width: 0; } to { width: 300px; } } @keyframes progress-glow { 0%, 100% { box-shadow: 0 0 10px #00ffff, 0 0 20px #00ffff, 0 0 30px #ff00ff; } 50% { box-shadow: 0 0 20px #00ffff, 0 0 40px #00ffff, 0 0 60px #ff00ff; } } /* Timeline step */ .step { position: relative; z-index: 2; text-align: center; } /* Step circle/node */ .step-node { width: 80px; height: 80px; border-radius: 50%; background: #0a0e27; border: 4px solid rgba(0, 255, 255, 0.3); display: flex; align-items: center; justify-content: center; margin: 0 auto 20px; font-size: 2em; position: relative; transition: all 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55); } /* Outer glow ring */ .step-node::before { content: ''; position: absolute; top: -8px; left: -8px; right: -8px; bottom: -8px; border-radius: 50%; border: 2px solid transparent; } /* Inner glow */ .step-node::after { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; border-radius: 50%; background: rgba(0, 255, 255, 0.2); opacity: 0.3; } /* Step 1 - Completed */ .step-1 .step-node { border-color: #ff00ff; background: linear-gradient(135deg, #ff00ff, #8800ff); box-shadow: 0 0 20px #ff00ff, 0 0 40px #ff00ff, inset 0 0 20px rgba(255, 255, 255, 0.2); animation: pulse-completed 2s ease-in-out infinite; } @keyframes pulse-completed { 0%, 100% { transform: scale(1); box-shadow: 0 0 20px #ff00ff, 0 0 40px #ff00ff, inset 0 0 20px rgba(255, 255, 255, 0.2); } 50% { transform: scale(1.02); box-shadow: 0 0 30px #ff00ff, 0 0 60px #ff00ff, inset 0 0 30px rgba(255, 255, 255, 0.3); } } /* Step 2 - Active */ .step-2 .step-node { border-color: #00ffff; background: linear-gradient(135deg, #00ffff, #0088ff); box-shadow: 0 0 20px #00ffff, 0 0 40px #00ffff, 0 0 60px #00ffff, inset 0 0 20px rgba(255, 255, 255, 0.2); animation: pulse-active 1.5s ease-in-out infinite; } .step-2 .step-node::before { border-color: #00ffff; animation: rotate-ring 3s linear infinite; } .step-2 .step-node::after { animation: pulse-inner 2s ease-in-out infinite; } @keyframes pulse-active { 0%, 100% { transform: scale(1); box-shadow: 0 0 20px #00ffff, 0 0 40px #00ffff, 0 0 60px #00ffff, inset 0 0 20px rgba(255, 255, 255, 0.2); } 50% { transform: scale(1.08); box-shadow: 0 0 30px #00ffff, 0 0 60px #00ffff, 0 0 90px #00ffff, inset 0 0 30px rgba(255, 255, 255, 0.3); } } @keyframes rotate-ring { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes pulse-inner { 0%, 100% { opacity: 0.3; } 50% { opacity: 0.6; } } /* Orbiting particles for active step */ .particle { position: absolute; width: 4px; height: 4px; background: #00ffff; border-radius: 50%; box-shadow: 0 0 10px #00ffff; top: 50%; left: 50%; animation: particle-orbit 3s linear infinite; } .particle:nth-of-type(1) { animation-delay: 0s; } .particle:nth-of-type(2) { animation-delay: 1s; } .particle:nth-of-type(3) { animation-delay: 2s; } @keyframes particle-orbit { 0% { transform: translate(-50%, -50%) rotate(0deg) translateX(60px) rotate(0deg); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { transform: translate(-50%, -50%) rotate(360deg) translateX(60px) rotate(-360deg); opacity: 0; } } /* Step label */ .step-label { font-size: 0.85em; text-transform: uppercase; letter-spacing: 2px; margin-bottom: 8px; } .step-1 .step-label { color: #ff00ff; text-shadow: 0 0 10px #ff00ff; } .step-2 .step-label { color: #00ffff; text-shadow: 0 0 10px #00ffff; animation: label-flicker 2s ease-in-out infinite; } @keyframes label-flicker { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } /* Step title */ .step-title { font-size: 1.3em; font-weight: 700; color: #fff; margin-bottom: 8px; } .step-1 .step-title { color: #ff00ff; text-shadow: 0 0 10px #ff00ff; } .step-2 .step-title { color: #00ffff; text-shadow: 0 0 10px #00ffff; animation: title-pulse 2s ease-in-out infinite; } @keyframes title-pulse { 0%, 100% { text-shadow: 0 0 10px #00ffff; } 50% { text-shadow: 0 0 20px #00ffff, 0 0 30px #00ffff; } } /* Step description */ .step-description { font-size: 0.9em; color: rgba(255, 255, 255, 0.6); line-height: 1.5; max-width: 200px; margin: 0 auto; } /* Scanline effect */ .scanline { position: absolute; top: 0; left: 0; width: 100%; height: 2px; background: linear-gradient(transparent, rgba(0, 255, 255, 0.5), transparent); animation: scan 4s linear infinite; pointer-events: none; z-index: 10; } @keyframes scan { 0% { transform: translateY(0); } 100% { transform: translateY(100vh); } } /* Responsive */ @media (max-width: 768px) { .title { font-size: 1.8em; margin-bottom: 40px; } .timeline { gap: 80px; padding: 20px 10px; } .timeline::before, .timeline::after { width: 200px; } @keyframes fill-progress { from { width: 0; } to { width: 200px; } } .step-node { width: 60px; height: 60px; font-size: 1.5em; } .step-title { font-size: 1.1em; } .step-description { font-size: 0.8em; max-width: 150px; } }
1
Comments
0
Want to comment?
Please
login
or
sign up
to post comments.
No comments yet
Be the first to comment on this component!
Comments 0
Want to comment?
Please login or sign up to post comments.
No comments yet
Be the first to comment on this component!