/* navigation arrows */ .slider-arrow position: absolute; top: 50%; transform: translateY(-50%); width: 48px; height: 48px; background: rgba(20, 20, 30, 0.7); backdrop-filter: blur(8px); border-radius: 60px; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 20; transition: all 0.2s; border: 1px solid rgba(255,255,255,0.25); color: white; font-size: 1.5rem;
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <title>Hero Slider | Interactive Carousel for CodePen</title> <!-- Google Fonts for modern typography --> <link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,300;14..32,400;14..32,600;14..32,700&display=swap" rel="stylesheet"> <!-- Font Awesome 6 (free CDN) for crisp icons --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> <style> * margin: 0; padding: 0; box-sizing: border-box;
.dot.active background: #ffffff; width: 32px; border-radius: 20px; box-shadow: 0 0 8px rgba(255,255,255,0.6); hero slider codepen
.hero-content .category display: inline-block; font-size: 0.85rem; letter-spacing: 2px; text-transform: uppercase; font-weight: 600; background: rgba(255, 255, 255, 0.2); backdrop-filter: blur(8px); padding: 0.4rem 1rem; border-radius: 40px; color: #fff; margin-bottom: 1.2rem; border: 1px solid rgba(255,255,255,0.3);
.arrow-left left: 1.5rem;
/* dots / pagination */ .slider-dots position: absolute; bottom: 1.8rem; left: 0; right: 0; display: flex; justify-content: center; gap: 0.8rem; z-index: 20;
.hero-content p font-size: 1.05rem; line-height: 1.5; color: #f0f0f0; margin-bottom: 2rem; font-weight: 400; text-shadow: 0 1px 2px rgba(0,0,0,0.2); max-width: 90%; /* navigation arrows */
// slider state let currentIndex = 0; const totalSlides = slides.length; let autoInterval = null; let isTransitioning = false; let progressInterval = null; let autoDelay = 6000; // 6 seconds per slide (matches progress bar) let progressPercent = 0; let progressUpdater = null;