BarberShop 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>Artisan Cuts | Premium Barbering</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet"> </head> <body> <div class="container"> <!-- Header --> <header class="header"> <h1 class="logo">Artisan Cuts</h1> <p class="tagline">Premium Barbering</p> <div class="services-bar"> <div class="service-tag"> <i class="fas fa-scissors"></i> <span>Precision Cuts</span> </div> <div class="service-tag"> <i class="fas fa-air-freshener"></i> <span>Beard Grooming</span> </div> <div class="service-tag"> <i class="fas fa-spa"></i> <span>Hot Towel Service</span> </div> <div class="service-tag"> <i class="fas fa-certificate"></i> <span>Premium Products</span> </div> </div> </header> <!-- Slider --> <div class="slider-container"> <div class="slider"> <!-- Slide 1 --> <div class="slide active" style="background-image: url('https://images.unsplash.com/photo-1585747860715-2ba37e788b70?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1474&q=80');"> <div class="slide-number">01</div> <div class="slide-content"> <h2 class="slide-title">Classic Fade & Beard Sculpting</h2> <p class="slide-description">A masterful blend of traditional barbering techniques and modern precision. Our signature fade is complemented by expert beard sculpting for a perfectly balanced look.</p> <a href="#book" class="cta-button"> <span>Book This Style</span> <i class="fas fa-arrow-right"></i> </a> </div> </div> <!-- Slide 2 --> <div class="slide" style="background-image: url('https://images.unsplash.com/photo-1622286342621-4bd786c2447c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1374&q=80');"> <div class="slide-number">02</div> <div class="slide-content"> <h2 class="slide-title">Modern Textured Crop</h2> <p class="slide-description">Contemporary styling with strategic texture and movement. This versatile cut works for both professional and casual settings, enhanced with premium styling products.</p> <a href="#book" class="cta-button"> <span>Book This Style</span> <i class="fas fa-arrow-right"></i> </a> </div> </div> <!-- Slide 3 --> <div class="slide" style="background-image: url('https://images.unsplash.com/photo-1567894340315-735d7c361db0?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1374&q=80');"> <div class="slide-number">03</div> <div class="slide-content"> <h2 class="slide-title">Executive Undercut</h2> <p class="slide-description">Sharp, clean lines with dramatic contrast. This statement cut features precise detailing and is finished with our proprietary grooming serum for lasting hold and shine.</p> <a href="#book" class="cta-button"> <span>Book This Style</span> <i class="fas fa-arrow-right"></i> </a> </div> </div> <!-- Slide 4 --> <div class="slide" style="background-image: url('https://images.unsplash.com/photo-1605497788044-5a32c7078486?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1374&q=80');"> <div class="slide-number">04</div> <div class="slide-content"> <h2 class="slide-title">Full Beard Masterclass</h2> <p class="slide-description">Comprehensive beard grooming service including shaping, trimming, conditioning, and expert advice on maintenance. We use only premium oils and balms.</p> <a href="#book" class="cta-button"> <span>Book This Style</span> <i class="fas fa-arrow-right"></i> </a> </div> </div> </div> <!-- Navigation --> <div class="slider-nav"> <button class="nav-btn prev-btn"> <i class="fas fa-chevron-left"></i> </button> <button class="nav-btn next-btn"> <i class="fas fa-chevron-right"></i> </button> </div> <!-- Progress Bar --> <div class="progress-container"> <div class="progress-bar"> <div class="progress-fill"></div> </div> <div class="slide-counter">01 / 04</div> </div> </div> <!-- Dots Indicator --> <div class="dots-container"> <div class="dot active" data-slide="0"></div> <div class="dot" data-slide="1"></div> <div class="dot" data-slide="2"></div> <div class="dot" data-slide="3"></div> </div> <!-- Info Panel --> <div class="info-panel"> <div class="info-item"> <div class="info-number">15+</div> <div class="info-label">Years Experience</div> </div> <div class="info-item"> <div class="info-number">2K+</div> <div class="info-label">Clients Served</div> </div> <div class="info-item"> <div class="info-number">100%</div> <div class="info-label">Premium Products</div> </div> <div class="info-item"> <div class="info-number">50+</div> <div class="info-label">Awards Won</div> </div> </div> </div> </body> </html>
CSS
:root { --gold: #D4AF37; --gold-light: #E6C34E; --gold-dark: #B8941F; --dark-bg: #0A0A0A; --dark-card: #1A1A1A; --text-light: #F5F5F5; --text-muted: #AAAAAA; --transition-slow: 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94); --transition-fast: 0.3s ease; } * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: var(--dark-bg); color: var(--text-light); font-family: 'Inter', sans-serif; min-height: 100vh; overflow-x: hidden; } .container { max-width: 1400px; width: 100%; margin: 0 auto; padding: 0 20px; } /* Header */ .header { padding: 40px 0; text-align: center; position: relative; z-index: 10; } .header::before { content: ''; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 200px; height: 1px; background: linear-gradient(90deg, transparent, var(--gold), transparent); } .logo { font-family: 'Cinzel', serif; font-size: 3.2rem; font-weight: 600; color: var(--gold); letter-spacing: 4px; margin-bottom: 8px; text-transform: uppercase; } .tagline { font-size: 0.9rem; letter-spacing: 10px; color: var(--text-muted); text-transform: uppercase; font-weight: 300; margin-bottom: 30px; } .services-bar { display: flex; justify-content: center; gap: 40px; margin-top: 25px; } .service-tag { display: flex; align-items: center; gap: 10px; font-size: 0.9rem; color: var(--text-muted); transition: var(--transition-fast); } .service-tag:hover { color: var(--gold); } .service-tag i { font-size: 0.8rem; color: var(--gold); } /* Slider Container */ .slider-container { position: relative; height: 700px; border-radius: 12px; overflow: hidden; box-shadow: 0 25px 60px rgba(0, 0, 0, 0.6); margin-bottom: 40px; } .slider { width: 100%; height: 100%; position: relative; } /* Slides */ .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; visibility: hidden; transition: opacity var(--transition-slow), visibility var(--transition-slow); background-size: cover; background-position: center; background-repeat: no-repeat; transform: scale(1.05); } .slide::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to right, rgba(10, 10, 10, 0.7) 0%, rgba(10, 10, 10, 0.4) 50%, rgba(10, 10, 10, 0.2) 100%); z-index: 1; } .slide.active { opacity: 1; visibility: visible; transform: scale(1); transition: opacity var(--transition-slow), visibility var(--transition-slow), transform 20s linear; } .slide.active::before { background: linear-gradient(to right, rgba(10, 10, 10, 0.8) 0%, rgba(10, 10, 10, 0.4) 50%, rgba(10, 10, 10, 0.1) 100%); } /* Slide Content */ .slide-content { position: relative; z-index: 2; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; padding: 0 80px 80px; max-width: 700px; } .slide-number { position: absolute; top: 60px; left: 80px; font-size: 1rem; color: var(--gold); font-weight: 500; letter-spacing: 2px; } .slide-title { font-family: 'Cinzel', serif; font-size: 3.5rem; font-weight: 500; line-height: 1.1; margin-bottom: 20px; text-transform: uppercase; letter-spacing: 1px; color: var(--text-light); } .slide-description { font-size: 1.2rem; line-height: 1.6; margin-bottom: 35px; color: var(--text-muted); max-width: 550px; font-weight: 300; } .cta-button { display: inline-flex; align-items: center; gap: 12px; padding: 18px 36px; background-color: var(--gold); color: var(--dark-bg); text-decoration: none; font-weight: 600; letter-spacing: 1.5px; border-radius: 2px; transition: var(--transition-fast); text-transform: uppercase; font-size: 0.9rem; width: fit-content; border: 1px solid transparent; } .cta-button:hover { background-color: transparent; border-color: var(--gold); color: var(--gold); transform: translateY(-3px); box-shadow: 0 10px 25px rgba(212, 175, 55, 0.2); } /* Navigation */ .slider-nav { position: absolute; bottom: 80px; right: 80px; display: flex; gap: 15px; z-index: 10; } .nav-btn { background: rgba(26, 26, 26, 0.7); border: 1px solid rgba(212, 175, 55, 0.3); color: var(--gold); width: 56px; height: 56px; border-radius: 50%; font-size: 1.2rem; cursor: pointer; transition: var(--transition-fast); display: flex; align-items: center; justify-content: center; backdrop-filter: blur(5px); } .nav-btn:hover { background: var(--gold); color: var(--dark-bg); border-color: var(--gold); transform: scale(1.05); } /* Progress Indicator */ .progress-container { position: absolute; bottom: 80px; left: 80px; width: 200px; z-index: 10; } .progress-bar { height: 1px; background-color: rgba(255, 255, 255, 0.2); position: relative; margin-bottom: 10px; } .progress-fill { position: absolute; top: 0; left: 0; height: 100%; width: 25%; background-color: var(--gold); transition: width var(--transition-fast); } .slide-counter { font-size: 0.9rem; color: var(--text-muted); letter-spacing: 1px; } /* Dots Indicator */ .dots-container { display: flex; justify-content: center; gap: 15px; margin-top: 30px; } .dot { width: 10px; height: 10px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.2); cursor: pointer; transition: var(--transition-fast); position: relative; } .dot.active { background-color: var(--gold); transform: scale(1.3); } .dot:hover::before { content: ''; position: absolute; top: -4px; left: -4px; right: -4px; bottom: -4px; border-radius: 50%; border: 1px solid var(--gold); } /* Info Panel */ .info-panel { display: flex; justify-content: space-between; padding: 30px 40px; background-color: var(--dark-card); border-radius: 8px; margin-top: 50px; border-top: 1px solid rgba(212, 175, 55, 0.1); } .info-item { text-align: center; flex: 1; } .info-number { font-family: 'Cinzel', serif; font-size: 2.5rem; color: var(--gold); margin-bottom: 5px; } .info-label { font-size: 0.9rem; color: var(--text-muted); letter-spacing: 1px; text-transform: uppercase; } /* Footer */ .footer { text-align: center; padding: 50px 0 30px; color: var(--text-muted); font-size: 0.9rem; letter-spacing: 1px; border-top: 1px solid rgba(255, 255, 255, 0.05); margin-top: 60px; } /* Responsive */ @media (max-width: 1024px) { .slider-container { height: 600px; } .slide-content { padding: 0 50px 60px; } .slide-title { font-size: 2.8rem; } .slider-nav, .progress-container { bottom: 60px; } .slider-nav { right: 50px; } .progress-container { left: 50px; } } @media (max-width: 768px) { .slider-container { height: 500px; } .slide-content { padding: 0 30px 40px; justify-content: flex-end; } .slide-title { font-size: 2.2rem; } .slide-description { font-size: 1rem; } .slide-number { top: 40px; left: 30px; } .slider-nav, .progress-container { bottom: 40px; } .slider-nav { right: 30px; } .progress-container { left: 30px; width: 150px; } .logo { font-size: 2.5rem; } .tagline { letter-spacing: 6px; font-size: 0.8rem; } .services-bar { gap: 20px; flex-wrap: wrap; } .info-panel { flex-direction: column; gap: 30px; } } @media (max-width: 480px) { .slider-container { height: 450px; border-radius: 8px; } .slide-content { padding: 0 20px 30px; } .slide-title { font-size: 1.8rem; } .slide-description { font-size: 0.9rem; margin-bottom: 25px; } .cta-button { padding: 15px 25px; font-size: 0.8rem; } .nav-btn { width: 48px; height: 48px; } .logo { font-size: 2rem; } .tagline { letter-spacing: 4px; } } /* Animation for slide content */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .slide.active .slide-content > * { animation: fadeInUp 0.8s ease-out forwards; } .slide.active .slide-number { animation-delay: 0.2s; } .slide.active .slide-title { animation-delay: 0.4s; } .slide.active .slide-description { animation-delay: 0.6s; } .slide.active .cta-button { animation-delay: 0.8s; } /* Initial state for slide content */ .slide .slide-content > * { opacity: 0; }
JavaScript
document.addEventListener('DOMContentLoaded', function() { const slides = document.querySelectorAll('.slide'); const dots = document.querySelectorAll('.dot'); const prevBtn = document.querySelector('.prev-btn'); const nextBtn = document.querySelector('.next-btn'); const progressFill = document.querySelector('.progress-fill'); const slideCounter = document.querySelector('.slide-counter'); let currentSlide = 0; let slideInterval; const totalSlides = slides.length; const slideDuration = 7000; // 7 seconds per slide // Initialize progress bar width updateProgressBar(); // Function to show a specific slide function showSlide(index) { // Remove active class from all slides and dots slides.forEach(slide => { slide.classList.remove('active'); }); dots.forEach(dot => dot.classList.remove('active')); // Ensure index is within bounds if (index >= totalSlides) currentSlide = 0; else if (index < 0) currentSlide = totalSlides - 1; else currentSlide = index; // Add active class to current slide and dot slides[currentSlide].classList.add('active'); dots[currentSlide].classList.add('active'); // Update progress bar and counter updateProgressBar(); updateSlideCounter(); // Reset the slide timer resetSlideTimer(); } // Function to update progress bar function updateProgressBar() { const progressPercentage = ((currentSlide + 1) / totalSlides) * 100; progressFill.style.width = `${progressPercentage}%`; } // Function to update slide counter function updateSlideCounter() { const slideNumber = (currentSlide + 1).toString().padStart(2, '0'); slideCounter.textContent = `${slideNumber} / ${totalSlides.toString().padStart(2, '0')}`; } // Function to show next slide function nextSlide() { showSlide(currentSlide + 1); } // Function to show previous slide function prevSlide() { showSlide(currentSlide - 1); } // Function to start automatic slideshow function startSlideShow() { slideInterval = setInterval(nextSlide, slideDuration); } // Function to stop automatic slideshow function stopSlideShow() { clearInterval(slideInterval); } // Function to reset the slide timer function resetSlideTimer() { stopSlideShow(); startSlideShow(); } // Event listeners for navigation buttons nextBtn.addEventListener('click', function() { nextSlide(); }); prevBtn.addEventListener('click', function() { prevSlide(); }); // Event listeners for dots dots.forEach(dot => { dot.addEventListener('click', function() { const slideIndex = parseInt(this.getAttribute('data-slide')); showSlide(slideIndex); }); }); // Keyboard navigation document.addEventListener('keydown', function(e) { if (e.key === 'ArrowLeft') { prevSlide(); } else if (e.key === 'ArrowRight') { nextSlide(); } }); // Pause slideshow on hover document.querySelector('.slider-container').addEventListener('mouseenter', stopSlideShow); document.querySelector('.slider-container').addEventListener('mouseleave', startSlideShow); // CTA button interaction document.querySelectorAll('.cta-button').forEach(button => { button.addEventListener('click', function(e) { e.preventDefault(); // Add a quick animation to the button this.style.transform = 'scale(0.95)'; setTimeout(() => { this.style.transform = ''; }, 200); // In a real implementation, this would open a booking modal console.log(`Booking request for: ${this.closest('.slide').querySelector('.slide-title').textContent}`); // Show a temporary message const originalText = this.querySelector('span').textContent; this.querySelector('span').textContent = 'Booking Request Sent'; this.style.background = '#2e8b57'; setTimeout(() => { this.querySelector('span').textContent = originalText; this.style.background = ''; }, 2000); }); }); // Initialize the slider startSlideShow(); // Add a subtle parallax effect on mouse move document.querySelector('.slider-container').addEventListener('mousemove', function(e) { const xAxis = (window.innerWidth / 2 - e.pageX) / 50; const yAxis = (window.innerHeight / 2 - e.pageY) / 50; const activeSlide = document.querySelector('.slide.active'); if (activeSlide) { activeSlide.style.transform = `scale(1.01) translate(${xAxis}px, ${yAxis}px)`; } }); // Reset transform on mouse leave document.querySelector('.slider-container').addEventListener('mouseleave', function() { const activeSlide = document.querySelector('.slide.active'); if (activeSlide) { activeSlide.style.transform = 'scale(1)'; } }); });
Output Preview
Desktop
Mobile
Fullscreen