Footware Collection Slider Template
Preview
Edit
Download
Run
Download Options
HTML File
Download as .html file
CSS File
Download as .css file
JavaScript File
Download as .js file
Combined HTML
All code in one HTML file
Project ZIP
All files in a ZIP archive
Cancel
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>SoleMate | Premium Footwear Collection</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <link href="https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;600;700&family=Poppins:wght@300;400;500;600&display=swap" rel="stylesheet"> </head> <body> <!-- Sale Banner --> <div class="sale-banner"> <i class="fas fa-fire"></i> FLASH SALE: 50% OFF SELECTED STYLES </div> <!-- Hero Slides --> <div class="hero-slide active" id="slide-1" style="background-image: url('https://images.unsplash.com/photo-1542291026-7eec264c27ff?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80')"> <div class="slide-content"> <div class="text-content"> <div class="collection-tag">Running Series</div> <h1 class="main-heading">Nike Air Max<span class="heading-highlight">270 React</span></h1> <div class="sub-heading">Ultimate Running Experience</div> <div class="shoe-details"> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-weight-hanging"></i> </div> <div class="detail-text"> Weight <span class="detail-label">285g per shoe</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-shoe-prints"></i> </div> <div class="detail-text"> Cushioning <span class="detail-label">React Foam</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-wind"></i> </div> <div class="detail-text"> Breathability <span class="detail-label">Mesh Upper</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-tint"></i> </div> <div class="detail-text"> Waterproof <span class="detail-label">Gore-Tex Layer</span> </div> </div> </div> <div class="price-section"> <div class="current-price">$149.99</div> <div class="original-price">$199.99</div> <div class="discount-badge">Save $50</div> </div> <div class="size-selector"> <button class="size-btn" data-size="7">7</button> <button class="size-btn" data-size="8">8</button> <button class="size-btn selected" data-size="9">9</button> <button class="size-btn" data-size="10">10</button> <button class="size-btn" data-size="11">11</button> </div> </div> <div class="shoe-image-container"> <img src="https://images.unsplash.com/photo-1542291026-7eec264c27ff?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80" alt="Nike Air Max 270 React" class="shoe-image"> <div class="shoe-badge">Best Seller</div> </div> </div> </div> <div class="hero-slide" id="slide-2" style="background-image: url('https://images.unsplash.com/photo-1606107557195-0e29a4b5b4aa?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2064&q=80')"> <div class="slide-content"> <div class="text-content"> <div class="collection-tag">Lifestyle</div> <h1 class="main-heading">Adidas Ultra<span class="heading-highlight">Boost 22</span></h1> <div class="sub-heading">All-Day Comfort Shoes</div> <div class="shoe-details"> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-bolt"></i> </div> <div class="detail-text"> Energy Return <span class="detail-label">Boost Foam</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-expand-alt"></i> </div> <div class="detail-text"> Flexibility <span class="detail-label">Primeknit Upper</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-shield-alt"></i> </div> <div class="detail-text"> Support <span class="detail-label">Torsion System</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-snowflake"></i> </div> <div class="detail-text"> Temperature <span class="detail-label">Climate Control</span> </div> </div> </div> <div class="price-section"> <div class="current-price">$129.99</div> <div class="original-price">$179.99</div> <div class="discount-badge">Save $50</div> </div> <div class="size-selector"> <button class="size-btn" data-size="7">7</button> <button class="size-btn" data-size="8">8</button> <button class="size-btn selected" data-size="9">9</button> <button class="size-btn" data-size="10">10</button> <button class="size-btn" data-size="11">11</button> </div> </div> <div class="shoe-image-container"> <img src="https://images.unsplash.com/photo-1606107557195-0e29a4b5b4aa?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2064&q=80" alt="Adidas Ultra Boost 22" class="shoe-image"> <div class="shoe-badge">New</div> </div> </div> </div> <div class="hero-slide" id="slide-3" style="background-image: url('https://images.unsplash.com/photo-1600185365483-26d7a4cc7519?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2025&q=80')"> <div class="slide-content"> <div class="text-content"> <div class="collection-tag">Basketball</div> <h1 class="main-heading">Jordan Retro<span class="heading-highlight">11 Concord</span></h1> <div class="sub-heading">Classic Basketball Icon</div> <div class="shoe-details"> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-basketball-ball"></i> </div> <div class="detail-text"> Performance <span class="detail-label">Court Ready</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-gem"></i> </div> <div class="detail-text"> Material <span class="detail-label">Patent Leather</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-layer-group"></i> </div> <div class="detail-text"> Support <span class="detail-label">Carbon Fiber</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-history"></i> </div> <div class="detail-text"> Heritage <span class="detail-label">1995 Original</span> </div> </div> </div> <div class="price-section"> <div class="current-price">$249.99</div> <div class="original-price">$299.99</div> <div class="discount-badge">Save $50</div> </div> <div class="size-selector"> <button class="size-btn" data-size="7">7</button> <button class="size-btn" data-size="8">8</button> <button class="size-btn selected" data-size="9">9</button> <button class="size-btn" data-size="10">10</button> <button class="size-btn" data-size="11">11</button> </div> </div> <div class="shoe-image-container"> <img src="https://images.unsplash.com/photo-1600185365483-26d7a4cc7519?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2025&q=80" alt="Jordan Retro 11 Concord" class="shoe-image"> <div class="shoe-badge">Limited</div> </div> </div> </div> <div class="hero-slide" id="slide-4" style="background-image: url('https://images.unsplash.com/photo-1600185365926-3a2ce3cdb9eb?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2025&q=80')"> <div class="slide-content"> <div class="text-content"> <div class="collection-tag">Trail Running</div> <h1 class="main-heading">Salomon Speed<span class="heading-highlight">Cross 5</span></h1> <div class="sub-heading">Off-Road Adventure</div> <div class="shoe-details"> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-mountain"></i> </div> <div class="detail-text"> Grip <span class="detail-label">Contagrip MA</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-shield-alt"></i> </div> <div class="detail-text"> Protection <span class="detail-label">Toe Cap</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-water"></i> </div> <div class="detail-text"> Waterproof <span class="detail-label">ClimaSalomon</span> </div> </div> <div class="detail-item"> <div class="detail-icon"> <i class="fas fa-anchor"></i> </div> <div class="detail-text"> Stability <span class="detail-label">SensiFit</span> </div> </div> </div> <div class="price-section"> <div class="current-price">$139.99</div> <div class="original-price">$189.99</div> <div class="discount-badge">Save $50</div> </div> <div class="size-selector"> <button class="size-btn" data-size="7">7</button> <button class="size-btn" data-size="8">8</button> <button class="size-btn selected" data-size="9">9</button> <button class="size-btn" data-size="10">10</button> <button class="size-btn" data-size="11">11</button> </div> </div> <div class="shoe-image-container"> <img src="https://images.unsplash.com/photo-1600185365926-3a2ce3cdb9eb?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2025&q=80" alt="Salomon SpeedCross 5" class="shoe-image"> <div class="shoe-badge">Trail</div> </div> </div> </div> <!-- Navigation --> <div class="nav-arrow left" id="prev-slide"> <i class="fas fa-chevron-left"></i> </div> <div class="nav-arrow right" id="next-slide"> <i class="fas fa-chevron-right"></i> </div> <!-- Slide Counter --> <div class="slide-counter"> <span class="current-slide">01</span> <span>/04</span> </div> <!-- Navigation Dots --> <div class="hero-nav"> <div class="nav-dot active" data-slide="0"></div> <div class="nav-dot" data-slide="1"></div> <div class="nav-dot" data-slide="2"></div> <div class="nav-dot" data-slide="3"></div> </div> </body> </html>
CSS
/* ===== CSS RESET & BASE ===== */ * { margin: 0; padding: 0; box-sizing: border-box; } :root { --primary-orange: #F97316; --secondary-orange: #FB923C; --dark-bg: #0F172A; --light-bg: #F8FAFC; --accent-teal: #0D9488; --text-dark: #1E293B; --text-light: #64748B; --white: #FFFFFF; --shadow: 0 15px 35px rgba(249, 115, 22, 0.15); --transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } body { font-family: 'Poppins', sans-serif; color: var(--text-dark); background: var(--light-bg); overflow-x: hidden; } /* ===== HERO CONTAINER ===== */ .hero-container { width: 100%; height: 100vh; min-height: 600px; max-height: 1200px; position: relative; overflow: hidden; } /* ===== HERO SLIDES ===== */ .hero-slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: var(--transition); display: flex; align-items: center; background: var(--dark-bg); background-size: cover; background-position: center; background-repeat: no-repeat; } .hero-slide.active { opacity: 1; } /* Gradient Overlay */ .hero-slide::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(90deg, rgba(15, 23, 42, 0.95) 30%, rgba(15, 23, 42, 0.7) 60%, rgba(15, 23, 42, 0.3) 100%); z-index: 1; } /* ===== SLIDE CONTENT ===== */ .slide-content { position: relative; z-index: 2; width: 100%; max-width: 1400px; margin: 0 auto; padding: 3rem 2rem; color: var(--white); display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; } /* Text Content */ .text-content { padding-left: 2rem; } /* Collection Tag */ .collection-tag { display: inline-block; background: var(--primary-orange); color: var(--white); padding: 0.7rem 1.8rem; font-size: 0.85rem; font-weight: 700; letter-spacing: 2px; margin-bottom: 1.5rem; border-radius: 30px; text-transform: uppercase; animation: pulse 2s infinite; } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } /* Main Heading */ .main-heading { font-family: 'Oswald', sans-serif; font-size: clamp(2rem, 6vw, 3rem); font-weight: 700; line-height: 1; text-transform: uppercase; } .heading-highlight { color: var(--primary-orange); display: block; } /* Sub Heading */ .sub-heading { font-size: clamp(1.2rem, 2vw, 1.5rem); margin-bottom: 1rem; font-weight: 300; color: rgba(255, 255, 255, 0.8); letter-spacing: 1px; } /* Description */ .description { font-size: clamp(0.95rem, 1.8vw, 1rem); margin-bottom: 1rem; font-weight: 300; line-height: 1.6; color: rgba(255, 255, 255, 0.9); max-width: 500px; } /* Shoe Details */ .shoe-details { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; margin-bottom: 2.5rem; } .detail-item { display: flex; align-items: center; gap: 1rem; } .detail-icon { color: var(--primary-orange); font-size: 1.5rem; width: 45px; height: 45px; background: rgba(249, 115, 22, 0.1); border-radius: 50%; display: flex; align-items: center; justify-content: center; } .detail-text { font-size: 0.95rem; color: rgba(255, 255, 255, 0.9); } .detail-label { display: block; font-size: 0.8rem; color: rgba(255, 255, 255, 0.6); margin-top: 0.2rem; } /* Price Section */ .price-section { display: flex; align-items: center; gap: 1.5rem; margin-bottom: 2.5rem; flex-wrap: wrap; } .current-price { font-size: clamp(2.5rem, 4vw, 3.5rem); font-weight: 800; color: var(--white); } .original-price { font-size: clamp(1.5rem, 2.5vw, 2rem); color: rgba(255, 255, 255, 0.5); text-decoration: line-through; font-weight: 500; } .discount-badge { background: var(--accent-teal); color: var(--white); padding: 0.6rem 1.2rem; border-radius: 20px; font-weight: 700; font-size: 0.9rem; } /* Size Selector */ .size-selector { display: flex; gap: 0.8rem; margin-bottom: 2rem; flex-wrap: wrap; } .size-btn { width: 50px; height: 50px; border: 2px solid rgba(255, 255, 255, 0.2); background: transparent; color: var(--white); border-radius: 10px; font-weight: 600; cursor: pointer; transition: var(--transition); display: flex; align-items: center; justify-content: center; font-family: 'Oswald', sans-serif; font-size: 1.1rem; } .size-btn:hover { border-color: var(--primary-orange); transform: translateY(-3px); } .size-btn.selected { background: var(--primary-orange); border-color: var(--primary-orange); color: var(--white); } /* CTA Buttons */ .cta-buttons { display: flex; gap: 1rem; flex-wrap: wrap; } .cta-button { display: inline-flex; align-items: center; justify-content: center; gap: 0.8rem; padding: clamp(1rem, 2vw, 1.2rem) clamp(2rem, 4vw, 2.5rem); font-size: clamp(0.95rem, 1.5vw, 1.05rem); font-weight: 600; text-decoration: none; border-radius: 10px; transition: var(--transition); cursor: pointer; border: 2px solid transparent; min-width: 180px; } .cta-button.primary { background: var(--primary-orange); color: var(--white); } .cta-button.secondary { background: transparent; color: var(--white); border-color: rgba(255, 255, 255, 0.3); } .cta-button:hover { transform: translateY(-3px); box-shadow: 0 15px 30px rgba(249, 115, 22, 0.3); } .cta-button.primary:hover { background: var(--secondary-orange); } .cta-button.secondary:hover { background: rgba(255, 255, 255, 0.1); border-color: var(--primary-orange); } /* Shoe Image Container */ .shoe-image-container { position: relative; display: flex; justify-content: center; align-items: center; } .shoe-image { max-width: 100%; height: auto; max-height: 500px; object-fit: contain; filter: drop-shadow(0 20px 40px rgba(0, 0, 0, 0.5)); animation: floatShoe 6s ease-in-out infinite; } @keyframes floatShoe { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-20px) rotate(5deg); } } /* Shoe Badge */ .shoe-badge { position: absolute; top: 20px; right: 20px; background: var(--accent-teal); color: var(--white); padding: 0.5rem 1rem; border-radius: 20px; font-weight: 700; font-size: 0.8rem; transform: rotate(15deg); } /* ===== SLIDE COUNTER ===== */ .slide-counter { position: absolute; bottom: clamp(30px, 5vh, 50px); right: clamp(20px, 3vw, 40px); z-index: 10; font-family: 'Oswald', sans-serif; font-size: clamp(1rem, 1.8vw, 1.2rem); color: var(--white); display: flex; align-items: baseline; gap: 0.5rem; } .current-slide { font-size: clamp(1.8rem, 3vw, 2.5rem); font-weight: 700; color: var(--primary-orange); } /* ===== SHOE FEATURES ===== */ .shoe-features { position: absolute; bottom: 80px; left: 50px; z-index: 10; display: flex; flex-direction: column; gap: 1rem; } .feature-tag { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); color: var(--white); padding: 0.8rem 1.5rem; border-radius: 30px; font-size: 0.9rem; font-weight: 500; display: flex; align-items: center; gap: 0.8rem; } /* ===== RESPONSIVE BREAKPOINTS ===== */ /* Desktop (1200px+) */ @media screen and (min-width: 1200px) { .slide-content { max-width: 1600px; } } /* Large Tablet (992px - 1200px) */ @media screen and (max-width: 1200px) { .slide-content { gap: 3rem; } .shoe-image { max-height: 450px; } .shoe-features { left: 30px; bottom: 100px; } } /* Tablet (768px - 992px) */ @media screen and (max-width: 992px) { .slide-content { grid-template-columns: 1fr; text-align: center; gap: 3rem; } .text-content { order: 2; padding-left: 0; } .shoe-image-container { order: 1; } .description { margin-left: auto; margin-right: auto; } .shoe-details { justify-content: center; grid-template-columns: repeat(2, 200px); } .size-selector { justify-content: center; } .cta-buttons { justify-content: center; } .shoe-image { max-height: 400px; } .shoe-features { display: none; } } /* Mobile (576px - 768px) */ @media screen and (max-width: 768px) { .hero-container { height: 100vh; min-height: 700px; } .header { padding: 1.2rem 1.5rem; } .nav-menu { position: fixed; top: 0; right: -100%; width: 80%; max-width: 300px; height: 100vh; background: var(--dark-bg); flex-direction: column; align-items: center; justify-content: center; gap: 2.5rem; transition: var(--transition); z-index: 25; padding: 2rem; } .nav-menu.active { right: 0; } .nav-link { font-size: 1.2rem; color: var(--white); } .mobile-menu-btn { display: block; } .header-actions { gap: 1rem; } .nav-arrow { width: 45px; height: 45px; font-size: 1.2rem; } .nav-arrow.left { left: 15px; } .nav-arrow.right { right: 15px; } .slide-counter { bottom: 80px; right: 15px; } .slide-content { padding: 1.5rem; } .shoe-image { max-height: 350px; } .shoe-details { grid-template-columns: 1fr; gap: 1rem; } .cta-button { min-width: 160px; } } /* Small Mobile (480px - 576px) */ @media screen and (max-width: 576px) { .hero-container { min-height: 650px; } .slide-content { padding: 1rem; gap: 2.5rem; } .main-heading { font-size: 2.5rem; } .sub-heading { font-size: 1.2rem; } .description { font-size: 1rem; } .current-price { font-size: 2.5rem; } .original-price { font-size: 1.5rem; } .size-btn { width: 45px; height: 45px; font-size: 1rem; } .shoe-image { max-height: 300px; } .cta-buttons { flex-direction: column; align-items: center; width: 100%; } .cta-button { width: 100%; max-width: 300px; } .header { padding: 1rem; } .logo-text { font-size: 1.3rem; } .nav-arrow { width: 40px; height: 40px; font-size: 1rem; } .nav-dot { width: 10px; height: 10px; } } /* Extra Small Mobile (360px - 480px) */ @media screen and (max-width: 360px) { .main-heading { font-size: 2rem; } .collection-tag { padding: 0.6rem 1.5rem; font-size: 0.8rem; } .size-btn { width: 40px; height: 40px; } .shoe-image { max-height: 250px; } .cta-button { padding: 0.9rem 1.5rem; font-size: 0.9rem; min-width: 140px; } } /* Landscape Mode */ @media screen and (max-height: 600px) and (orientation: landscape) { .hero-container { height: 100vh; min-height: 500px; } .slide-content { gap: 2rem; padding: 1rem; } .main-heading { font-size: 2.2rem; margin-bottom: 0.8rem; } .description { font-size: 0.9rem; margin-bottom: 1.5rem; } .shoe-details { margin-bottom: 1.5rem; } .shoe-image { max-height: 280px; } .hero-nav { bottom: 20px; } .header { padding: 0.8rem 1.5rem; } } /* ===== ANIMATIONS ===== */ @keyframes slideInLeft { from { opacity: 0; transform: translateX(-50px); } to { opacity: 1; transform: translateX(0); } } @keyframes slideInRight { from { opacity: 0; transform: translateX(50px); } to { opacity: 1; transform: translateX(0); } } .hero-slide.active .text-content { animation: slideInLeft 0.8s ease forwards; } .hero-slide.active .shoe-image-container { animation: slideInRight 0.8s ease forwards; } /* ===== MOBILE MENU OVERLAY ===== */ .mobile-menu-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 24; opacity: 0; visibility: hidden; transition: var(--transition); } .mobile-menu-overlay.active { opacity: 1; visibility: visible; } /* ===== SALE BANNER ===== */ .sale-banner { position: absolute; top: 20px; left: 50%; transform: translateX(-50%); background: var(--primary-orange); color: var(--white); padding: 0.8rem 2.5rem; border-radius: 0 0 25px 25px; font-weight: 700; letter-spacing: 1px; z-index: 20; font-size: 0.9rem; box-shadow: 0 5px 20px rgba(249, 115, 22, 0.3); display: flex; align-items: center; gap: 0.8rem; } @media screen and (max-width: 768px) { .sale-banner { top: 70px; padding: 0.6rem 1.5rem; font-size: 0.8rem; } } /* ===== REVIEW STARS ===== */ .review-stars { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1.5rem; } .stars { color: #FBBF24; font-size: 1.2rem; } .review-text { color: rgba(255, 255, 255, 0.7); font-size: 0.9rem; }
JavaScript
document.addEventListener('DOMContentLoaded', function() { // Elements const slides = document.querySelectorAll('.hero-slide'); const dots = document.querySelectorAll('.nav-dot'); const prevBtn = document.getElementById('prev-slide'); const nextBtn = document.getElementById('next-slide'); const currentSlideElement = document.querySelector('.current-slide'); const mobileMenuBtn = document.getElementById('mobileMenuBtn'); const navMenu = document.getElementById('navMenu'); const mobileOverlay = document.getElementById('mobileOverlay'); const sizeButtons = document.querySelectorAll('.size-btn'); // Variables let currentSlide = 0; let slideInterval; let isTransitioning = false; // Initialize initSlider(); function initSlider() { showSlide(currentSlide); startSlideShow(); setupEventListeners(); setupMobileMenu(); setupSizeSelector(); preloadImages(); } function showSlide(n) { if (isTransitioning) return; isTransitioning = true; // Hide all slides slides.forEach(slide => { slide.classList.remove('active'); }); // Update dots dots.forEach(dot => { dot.classList.remove('active'); }); // Update current slide currentSlide = (n + slides.length) % slides.length; // Show new slide setTimeout(() => { slides[currentSlide].classList.add('active'); dots[currentSlide].classList.add('active'); updateCounter(); isTransitioning = false; }, 300); } function updateCounter() { const slideNumber = (currentSlide + 1).toString().padStart(2, '0'); currentSlideElement.textContent = slideNumber; } function nextSlide() { if (isTransitioning) return; showSlide(currentSlide + 1); resetSlideShow(); } function prevSlide() { if (isTransitioning) return; showSlide(currentSlide - 1); resetSlideShow(); } function startSlideShow() { slideInterval = setInterval(nextSlide, 6000); } function resetSlideShow() { clearInterval(slideInterval); startSlideShow(); } function setupMobileMenu() { function toggleMobileMenu() { navMenu.classList.toggle('active'); mobileOverlay.classList.toggle('active'); document.body.style.overflow = navMenu.classList.contains('active') ? 'hidden' : 'auto'; } function closeMobileMenu() { navMenu.classList.remove('active'); mobileOverlay.classList.remove('active'); document.body.style.overflow = 'auto'; } mobileMenuBtn.addEventListener('click', toggleMobileMenu); mobileOverlay.addEventListener('click', closeMobileMenu); document.querySelectorAll('.nav-link').forEach(link => { link.addEventListener('click', closeMobileMenu); }); } function setupSizeSelector() { sizeButtons.forEach(button => { button.addEventListener('click', function() { const slideContent = this.closest('.slide-content'); slideContent.querySelectorAll('.size-btn').forEach(btn => { btn.classList.remove('selected'); }); this.classList.add('selected'); // Show selection feedback this.style.transform = 'scale(0.9)'; setTimeout(() => { this.style.transform = 'scale(1)'; }, 200); }); }); } function setupEventListeners() { // Slider controls nextBtn.addEventListener('click', nextSlide); prevBtn.addEventListener('click', prevSlide); // Dot navigation dots.forEach(dot => { dot.addEventListener('click', function() { const slideIndex = parseInt(this.getAttribute('data-slide')); if (slideIndex !== currentSlide) { showSlide(slideIndex); resetSlideShow(); } }); }); // Keyboard navigation document.addEventListener('keydown', function(e) { if (e.key === 'ArrowLeft') prevSlide(); if (e.key === 'ArrowRight') nextSlide(); if (e.key === 'Escape') { navMenu.classList.remove('active'); mobileOverlay.classList.remove('active'); } }); // Pause slider on hover const heroContainer = document.querySelector('.hero-container'); heroContainer.addEventListener('mouseenter', () => { clearInterval(slideInterval); }); heroContainer.addEventListener('mouseleave', () => { startSlideShow(); }); // Touch swipe for mobile let touchStartX = 0; let touchEndX = 0; heroContainer.addEventListener('touchstart', function(e) { touchStartX = e.changedTouches[0].clientX; }); heroContainer.addEventListener('touchend', function(e) { touchEndX = e.changedTouches[0].clientX; handleSwipe(); }); function handleSwipe() { const swipeThreshold = 50; const difference = touchStartX - touchEndX; if (Math.abs(difference) > swipeThreshold) { if (difference > 0) { nextSlide(); } else { prevSlide(); } } } // Add to cart functionality const cartCount = document.querySelector('.cart-count'); const addToCartButtons = document.querySelectorAll('.cta-button.primary'); addToCartButtons.forEach(button => { button.addEventListener('click', function(e) { e.preventDefault(); let count = parseInt(cartCount.textContent); cartCount.textContent = count + 1; // Add animation cartCount.style.transform = 'scale(1.5)'; setTimeout(() => { cartCount.style.transform = 'scale(1)'; }, 300); // Get selected size const slideContent = this.closest('.slide-content'); const selectedSize = slideContent.querySelector('.size-btn.selected').textContent; // Show feedback const feedback = document.createElement('div'); feedback.textContent = `Added to cart! Size: ${selectedSize}`; feedback.style.position = 'fixed'; feedback.style.top = '100px'; feedback.style.right = '20px'; feedback.style.background = '#0D9488'; feedback.style.color = 'white'; feedback.style.padding = '12px 24px'; feedback.style.borderRadius = '8px'; feedback.style.zIndex = '1000'; feedback.style.fontWeight = '500'; document.body.appendChild(feedback); setTimeout(() => { feedback.style.opacity = '0'; feedback.style.transform = 'translateY(-20px)'; setTimeout(() => { document.body.removeChild(feedback); }, 300); }, 2000); }); }); } function preloadImages() { // Preload all slide images for better performance const imageUrls = [ 'https://images.unsplash.com/photo-1542291026-7eec264c27ff?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80', 'https://images.unsplash.com/photo-1606107557195-0e29a4b5b4aa?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2064&q=80', 'https://images.unsplash.com/photo-1600185365483-26d7a4cc7519?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2025&q=80', 'https://images.unsplash.com/photo-1600185365926-3a2ce3cdb9eb?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2025&q=80' ]; imageUrls.forEach(url => { const img = new Image(); img.src = url; }); } // Handle window resize window.addEventListener('resize', handleResize); function handleResize() { // Close mobile menu on larger screens if (window.innerWidth > 768) { navMenu.classList.remove('active'); mobileOverlay.classList.remove('active'); document.body.style.overflow = 'auto'; } // Adjust layout based on screen size adjustLayout(); } function adjustLayout() { const viewportWidth = window.innerWidth; // Show/hide shoe features based on screen size const shoeFeatures = document.querySelector('.shoe-features'); if (shoeFeatures) { if (viewportWidth <= 992) { shoeFeatures.style.display = 'none'; } else { shoeFeatures.style.display = 'flex'; } } } // Handle orientation change window.addEventListener('orientationchange', function() { setTimeout(adjustLayout, 100); }); // Initialize layout adjustLayout(); });
Output Preview
Desktop
Mobile
Fullscreen