Slideshows are a powerful tool for capturing attention and conveying information succinctly. Whether for business presentations, educational content, or creative portfolios, a well-crafted slideshow can make a lasting impact.
In this article, we will explore 10 slideshow examples that demonstrate effective design and storytelling techniques. These examples will inspire you to create your own engaging and visually appealing slideshows.
CODE1
Here's the code:
CODETEXT1
CODE2
Here's the code:
CODETEXT2
CODE3
Here's the code:
CODETEXT3
CODE4
Here's the code:
CODETEXT4
CODE5
Here's the code:
CODETEXT5
Subframe's drag-and-drop interface and intuitive, responsive canvas make it effortless to design pixel-perfect slideshows. Loved by designers and developers alike, Subframe ensures your UI is stunning and functional every time.
Start for free and experience the ease of creating beautiful slideshows with Subframe today!
CODE6
Here's the code:
CODETEXT6
CODE7
Here's the code:
CODETEXT7
CODE8
Here's the code:
CODETEXT8
CODE9
Here's the code:
CODETEXT9
CODE10
Here's the code:
CODETEXT10
Ready to elevate your UI design game? With Subframe, you can create pixel-perfect slideshows and stunning UIs in minutes. Our drag-and-drop editor and beautifully crafted components make the process efficient and enjoyable.
Don't waitโstart for free and begin designing immediately. Experience the ease and power of Subframe today!
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>E-commerce Retail Showcase</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; } :root { --primary-color: #f8f8f8; --text-color: #222222; --accent-color: #444444; --highlight-color: #ddd; --transition-time: 0.5s; } body { background-color: var(--primary-color); color: var(--text-color); height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; } .container { width: 700px; height: 700px; position: relative; overflow: hidden; border-radius: 8px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05); } .slideshow { width: 100%; height: 100%; position: relative; } .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transform: scale(1.05); transition: opacity var(--transition-time) ease, transform var(--transition-time) ease; display: flex; flex-direction: column; justify-content: space-between; padding: 40px; background-color: var(--primary-color); } .slide.active { opacity: 1; transform: scale(1); z-index: 1; } .product-image { width: 100%; height: 400px; object-fit: cover; border-radius: 8px; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.05); transition: transform 0.3s ease; } .product-image:hover { transform: scale(1.02); } .product-info { margin-top: 24px; position: relative; z-index: 2; } .product-name { font-size: 28px; font-weight: 600; margin-bottom: 8px; position: relative; display: inline-block; } .product-name::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 0; height: 2px; background-color: var(--accent-color); transition: width 0.4s ease; } .slide.active .product-name::after { width: 100%; } .product-description { font-size: 16px; line-height: 1.6; margin-bottom: 16px; color: #666; max-width: 90%; } .product-price { font-size: 24px; font-weight: 700; margin-bottom: 24px; color: var(--accent-color); } .navigation { display: flex; justify-content: center; position: absolute; bottom: 20px; left: 0; right: 0; z-index: 2; } .nav-dot { width: 10px; height: 10px; border-radius: 50%; background-color: rgba(0, 0, 0, 0.2); margin: 0 5px; cursor: pointer; transition: all 0.3s ease; } .nav-dot.active { background-color: var(--accent-color); transform: scale(1.2); } .arrow-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 50px; height: 50px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.7); display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 3; transition: all 0.3s ease; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); backdrop-filter: blur(5px); } .arrow-nav:hover { background-color: white; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15); } .prev { left: 20px; } .next { right: 20px; } .arrow-icon { width: 20px; height: 20px; fill: var(--accent-color); } .cart-button { padding: 12px 24px; border: none; background-color: var(--accent-color); color: white; font-weight: 600; border-radius: 4px; cursor: pointer; transition: all 0.3s ease; display: inline-flex; align-items: center; overflow: hidden; position: relative; } .cart-button:hover { background-color: #333; transform: translateY(-2px); } .cart-button:active { transform: translateY(0); } .cart-icon { margin-right: 8px; width: 16px; height: 16px; fill: white; } .cart-button .cart-animation { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.2); transform: translateX(-100%); } .cart-button:hover .cart-animation { animation: cart-wave 0.8s forwards; } @keyframes cart-wave { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } .loading-bar { position: absolute; bottom: 5px; left: 0; width: 0; height: 2px; background-color: var(--accent-color); z-index: 3; transition: width 0.1s linear; } .color-options { display: flex; margin-bottom: 20px; } .color-option { width: 24px; height: 24px; border-radius: 50%; margin-right: 8px; cursor: pointer; transition: transform 0.3s ease; position: relative; border: 2px solid transparent; } .color-option:hover { transform: scale(1.2); } .color-option.active { border-color: var(--accent-color); transform: scale(1.2); } .color-option::after { content: ''; position: absolute; top: -2px; left: -2px; right: -2px; bottom: -2px; border-radius: 50%; border: 1px solid rgba(0, 0, 0, 0.1); pointer-events: none; } /* Mobile Styles */ @media (max-width: 700px) { .container { width: 100%; height: 100%; border-radius: 0; } .product-image { height: 300px; } .slide { padding: 30px 20px; } .product-name { font-size: 24px; } .product-description { font-size: 14px; } .arrow-nav { width: 40px; height: 40px; } .prev { left: 10px; } .next { right: 10px; } } /* Animations */ @keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .slide.active .product-info * { animation: fadeUp 0.6s forwards; } .slide.active .product-name { animation-delay: 0.1s; } .slide.active .product-description { animation-delay: 0.2s; } .slide.active .product-price { animation-delay: 0.3s; } .slide.active .color-options { animation-delay: 0.4s; } .slide.active .cart-button { animation-delay: 0.5s; } /* Initial state for animated elements */ .product-info * { opacity: 0; transform: translateY(20px); } /* Product tag */ .product-tag { position: absolute; top: 20px; right: 20px; padding: 8px 12px; background-color: var(--accent-color); color: white; font-size: 12px; font-weight: 600; border-radius: 4px; z-index: 2; transform: rotate(3deg); box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); } </style> </head> <body> <div class="container"> <div class="slideshow"> <div class="slide active"> <div class="product-tag">NEW ARRIVAL</div> <img src="https://images.unsplash.com/photo-1511499767150-a48a237f0083?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" alt="Minimalist Watch" class="product-image"> <div class="product-info"> <h2 class="product-name">The Minimal Timepiece</h2> <p class="product-description">Refined elegance meets practical design. Our signature watch features a sustainable leather strap and Swiss movement.</p> <div class="color-options"> <div class="color-option active" style="background-color: #333333;"></div> <div class="color-option" style="background-color: #7b5d5d;"></div> <div class="color-option" style="background-color: #e9e2d0;"></div> </div> <div class="product-price">$189</div> <button class="cart-button"> <svg class="cart-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"/> </svg> Add to Cart <span class="cart-animation"></span> </button> </div> </div> <div class="slide"> <div class="product-tag">BEST SELLER</div> <img src="https://images.unsplash.com/photo-1541099649105-f69ad21f3246?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" alt="Ceramic Home Decor" class="product-image"> <div class="product-info"> <h2 class="product-name">Sculptural Ceramic Vase</h2> <p class="product-description">Hand-crafted in our Portland studio, each piece features unique textural elements and a matte glazed finish.</p> <div class="color-options"> <div class="color-option active" style="background-color: #e2d9d1;"></div> <div class="color-option" style="background-color: #b2a49b;"></div> <div class="color-option" style="background-color: #5a5a5a;"></div> </div> <div class="product-price">$68</div> <button class="cart-button"> <svg class="cart-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"/> </svg> Add to Cart <span class="cart-animation"></span> </button> </div> </div> <div class="slide"> <div class="product-tag">SUSTAINABLE</div> <img src="https://images.unsplash.com/photo-1543163521-1bf539c55dd2?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" alt="Eco Skincare Set" class="product-image"> <div class="product-info"> <h2 class="product-name">Essential Skincare Trio</h2> <p class="product-description">Clean, vegan formulations packaged in recycled glass. Our intensive hydration set for daily nourishment.</p> <div class="color-options"> <div class="color-option active" style="background-color: #d4e2d4;"></div> <div class="color-option" style="background-color: #f0ead6;"></div> <div class="color-option" style="background-color: #dce1e9;"></div> </div> <div class="product-price">$97</div> <button class="cart-button"> <svg class="cart-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"/> </svg> Add to Cart <span class="cart-animation"></span> </button> </div> </div> <div class="slide"> <div class="product-tag">LIMITED EDITION</div> <img src="https://images.unsplash.com/photo-1505330622279-bf7d7fc918f4?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1000&q=80" alt="Designer Headphones" class="product-image"> <div class="product-info"> <h2 class="product-name">Acoustic Precision Headphones</h2> <p class="product-description">40mm dynamic drivers with noise-cancellation technology, wrapped in premium materials for all-day comfort.</p> <div class="color-options"> <div class="color-option active" style="background-color: #222222;"></div> <div class="color-option" style="background-color: #9c7c5b;"></div> <div class="color-option" style="background-color: #373b44;"></div> </div> <div class="product-price">$249</div> <button class="cart-button"> <svg class="cart-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z"/> </svg> Add to Cart <span class="cart-animation"></span> </button> </div> </div> <div class="navigation"></div> <div class="arrow-nav prev"> <svg class="arrow-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/> </svg> </div> <div class="arrow-nav next"> <svg class="arrow-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/> </svg> </div> <div class="loading-bar"></div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const slides = document.querySelectorAll('.slide'); const navigation = document.querySelector('.navigation'); const prevButton = document.querySelector('.prev'); const nextButton = document.querySelector('.next'); const loadingBar = document.querySelector('.loading-bar'); const colorOptions = document.querySelectorAll('.color-option'); let currentSlide = 0; let autoplayInterval; let autoplayDuration = 5000; let loadingBarInterval; // Create navigation dots slides.forEach((_, index) => { const dot = document.createElement('div'); dot.classList.add('nav-dot'); if (index === 0) dot.classList.add('active'); dot.addEventListener('click', () => goToSlide(index)); navigation.appendChild(dot); }); const dots = document.querySelectorAll('.nav-dot'); // Initialize loading bar function startLoadingBar() { let width = 0; clearInterval(loadingBarInterval); loadingBarInterval = setInterval(() => { if (width >= 100) { clearInterval(loadingBarInterval); nextSlide(); } else { width += 100 / (autoplayDuration / 100); loadingBar.style.width = width + '%'; } }, 100); } function goToSlide(index) { slides[currentSlide].classList.remove('active'); dots[currentSlide].classList.remove('active'); currentSlide = index; if (currentSlide < 0) currentSlide = slides.length - 1; if (currentSlide >= slides.length) currentSlide = 0; slides[currentSlide].classList.add('active'); dots[currentSlide].classList.add('active'); startLoadingBar(); } function nextSlide() { goToSlide(currentSlide + 1); } function prevSlide() { goToSlide(currentSlide - 1); } // Initialize autoplay function startAutoplay() { stopAutoplay(); startLoadingBar(); autoplayInterval = setInterval(nextSlide, autoplayDuration); } function stopAutoplay() { clearInterval(autoplayInterval); clearInterval(loadingBarInterval); loadingBar.style.width = '0%'; } // Event listeners prevButton.addEventListener('click', () => { prevSlide(); stopAutoplay(); startAutoplay(); }); nextButton.addEventListener('click', () => { nextSlide(); stopAutoplay(); startAutoplay(); }); // Color options functionality colorOptions.forEach(option => { option.addEventListener('click', function() { // Find and remove active class from sibling colors const parentSlide = this.closest('.slide'); const siblingColors = parentSlide.querySelectorAll('.color-option'); siblingColors.forEach(sibling => sibling.classList.remove('active')); // Add active class to clicked color this.classList.add('active'); }); }); // Touch/swipe functionality let touchStartX = 0; let touchEndX = 0; const container = document.querySelector('.container'); container.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, false); container.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, false); function handleSwipe() { const minSwipeDistance = 50; if (touchEndX < touchStartX - minSwipeDistance) { nextSlide(); stopAutoplay(); startAutoplay(); } else if (touchEndX > touchStartX + minSwipeDistance) { prevSlide(); stopAutoplay(); startAutoplay(); } } // Cart button animation const cartButtons = document.querySelectorAll('.cart-button'); cartButtons.forEach(button => { button.addEventListener('click', function(e) { e.preventDefault(); // Add a small animation this.classList.add('clicked'); setTimeout(() => { this.classList.remove('clicked'); }, 300); }); }); // Start autoplay startAutoplay(); // Pause autoplay when user hovers over slideshow container.addEventListener('mouseenter', stopAutoplay); container.addEventListener('mouseleave', startAutoplay); // Make sure loading bar stops when tab/window is not visible document.addEventListener('visibilitychange', () => { if (document.hidden) { stopAutoplay(); } else { startAutoplay(); } }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Luxe Estate Portfolio</title> <style> :root { --primary-color: #2A3990; --accent-color: #F49F1C; --light-color: #f8f9fa; --dark-color: #212529; --transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Montserrat', sans-serif; } body { background-color: var(--light-color); color: var(--dark-color); overflow-x: hidden; height: 100vh; display: flex; flex-direction: column; max-width: 700px; margin: 0 auto; } .portfolio-container { display: flex; flex-direction: column; height: 100%; max-height: 700px; overflow: hidden; position: relative; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); border-radius: 12px; } .slideshow { position: relative; width: 100%; height: 70%; overflow: hidden; } .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: var(--transition); display: flex; flex-direction: column; justify-content: flex-end; } .slide.active { opacity: 1; z-index: 1; } .slide-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; z-index: -1; filter: brightness(0.9); transform: scale(1.05); transition: transform 8s ease-out; } .slide.active .slide-img { transform: scale(1); } .slide-content { padding: 2rem; background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent); color: white; transform: translateY(20px); opacity: 0; transition: var(--transition); transition-delay: 0.3s; } .slide.active .slide-content { transform: translateY(0); opacity: 1; } .property-title { font-size: 1.8rem; font-weight: 700; margin-bottom: 0.5rem; color: white; } .property-price { font-size: 1.4rem; font-weight: 600; color: var(--accent-color); margin-bottom: 0.5rem; } .property-features { display: flex; gap: 1rem; margin-top: 0.5rem; } .feature { display: flex; align-items: center; gap: 0.3rem; font-size: 0.9rem; } .feature i { color: var(--accent-color); } .badge { display: inline-block; background-color: var(--accent-color); color: white; padding: 0.25rem 0.75rem; border-radius: 30px; font-size: 0.75rem; font-weight: 600; margin-right: 0.5rem; margin-bottom: 0.5rem; } .thumbnails { display: flex; justify-content: center; gap: 0.75rem; padding: 1rem; background-color: white; height: 30%; overflow-x: auto; scrollbar-width: none; } .thumbnails::-webkit-scrollbar { display: none; } .thumbnail { position: relative; width: 120px; height: 80px; border-radius: 8px; overflow: hidden; cursor: pointer; flex-shrink: 0; transition: var(--transition); transform: scale(0.9); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); } .thumbnail:hover { transform: scale(0.95) translateY(-5px); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); } .thumbnail.active { transform: scale(1); border: 3px solid var(--accent-color); } .thumbnail img { width: 100%; height: 100%; object-fit: cover; transition: var(--transition); } .thumbnail:hover img { filter: brightness(1.1); } .thumbnail::after { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 30%; background: linear-gradient(to top, rgba(0, 0, 0, 0.6), transparent); opacity: 0; transition: var(--transition); } .thumbnail:hover::after { opacity: 1; } .controls { position: absolute; top: 50%; width: 100%; transform: translateY(-50%); display: flex; justify-content: space-between; padding: 0 1rem; z-index: 10; pointer-events: none; } .btn { width: 40px; height: 40px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.8); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: var(--transition); pointer-events: auto; box-shadow: 0 3px 8px rgba(0, 0, 0, 0.2); } .btn:hover { background-color: var(--accent-color); color: white; transform: scale(1.1); } .progress-bar { position: absolute; bottom: 0; left: 0; height: 4px; background-color: var(--accent-color); width: 0; transition: width 0.3s ease; z-index: 2; } .floating-badge { position: absolute; top: 1rem; left: 1rem; background-color: var(--primary-color); color: white; padding: 0.5rem 1rem; border-radius: 4px; font-weight: 600; z-index: 2; transform: rotate(-3deg); box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2); animation: pulse 2s infinite; } @keyframes pulse { 0% { transform: rotate(-3deg) scale(1); } 50% { transform: rotate(-3deg) scale(1.05); } 100% { transform: rotate(-3deg) scale(1); } } @media (max-width: 576px) { .property-title { font-size: 1.4rem; } .property-price { font-size: 1.2rem; } .property-features { flex-wrap: wrap; gap: 0.5rem; } .feature { font-size: 0.75rem; } .thumbnail { width: 80px; height: 60px; } } /* Loading animation */ .loading { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.9); display: flex; justify-content: center; align-items: center; z-index: 100; transition: opacity 0.5s ease; } .loading-spinner { width: 50px; height: 50px; border: 5px solid rgba(42, 57, 144, 0.2); border-radius: 50%; border-top-color: var(--primary-color); animation: spin 1s ease-in-out infinite; } @keyframes spin { to { transform: rotate(360deg); } } .hidden { opacity: 0; pointer-events: none; } </style> </head> <body> <div class="portfolio-container"> <div class="loading"> <div class="loading-spinner"></div> </div> <div class="slideshow"> <div class="progress-bar"></div> <div class="slide active" data-index="0"> <img src="https://images.unsplash.com/photo-1600585154340-be6161a56a0c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" class="slide-img" alt="Luxury Home"> <div class="floating-badge">FEATURED</div> <div class="slide-content"> <div> <span class="badge">NEW LISTING</span> <span class="badge">WATERFRONT</span> </div> <h2 class="property-title">Lakeside Modern Retreat</h2> <p class="property-price">$2,450,000</p> <p>Stunning contemporary home with panoramic lake views and luxury finishes throughout.</p> <div class="property-features"> <div class="feature"><i>๐๏ธ</i> 5 Beds</div> <div class="feature"><i>๐ฟ</i> 4.5 Baths</div> <div class="feature"><i>๐</i> 4,200 sq.ft</div> </div> </div> </div> <div class="slide" data-index="1"> <img src="https://images.unsplash.com/photo-1613977257363-707ba9348227?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" class="slide-img" alt="Urban Apartment"> <div class="slide-content"> <div> <span class="badge">PENTHOUSE</span> <span class="badge">CITY VIEWS</span> </div> <h2 class="property-title">Downtown Penthouse</h2> <p class="property-price">$1,875,000</p> <p>Sophisticated urban living with floor-to-ceiling windows and a private rooftop terrace.</p> <div class="property-features"> <div class="feature"><i>๐๏ธ</i> 3 Beds</div> <div class="feature"><i>๐ฟ</i> 3 Baths</div> <div class="feature"><i>๐</i> 2,800 sq.ft</div> </div> </div> </div> <div class="slide" data-index="2"> <img src="https://images.unsplash.com/photo-1600607686527-6fb886090705?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1587&q=80" class="slide-img" alt="Family Home"> <div class="slide-content"> <div> <span class="badge">FAMILY-FRIENDLY</span> <span class="badge">POOL</span> </div> <h2 class="property-title">Hillside Family Estate</h2> <p class="property-price">$1,595,000</p> <p>Spacious family home with an open floor plan, gourmet kitchen, and resort-style backyard.</p> <div class="property-features"> <div class="feature"><i>๐๏ธ</i> 5 Beds</div> <div class="feature"><i>๐ฟ</i> 4 Baths</div> <div class="feature"><i>๐</i> 3,850 sq.ft</div> </div> </div> </div> <div class="slide" data-index="3"> <img src="https://images.unsplash.com/photo-1577495508048-b635879837f1?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1441&q=80" class="slide-img" alt="Modern Villa"> <div class="slide-content"> <div> <span class="badge">ARCHITECTURAL</span> <span class="badge">SMART HOME</span> </div> <h2 class="property-title">Minimalist Villa</h2> <p class="property-price">$3,290,000</p> <p>Award-winning architectural masterpiece with cutting-edge technology and sustainable features.</p> <div class="property-features"> <div class="feature"><i>๐๏ธ</i> 4 Beds</div> <div class="feature"><i>๐ฟ</i> 4.5 Baths</div> <div class="feature"><i>๐</i> 4,600 sq.ft</div> </div> </div> </div> <div class="slide" data-index="4"> <img src="https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1600&q=80" class="slide-img" alt="Historic Property"> <div class="slide-content"> <div> <span class="badge">HISTORIC</span> <span class="badge">RENOVATED</span> </div> <h2 class="property-title">Restored Victorian</h2> <p class="property-price">$1,750,000</p> <p>Meticulously renovated 1890s Victorian with original details and modern conveniences.</p> <div class="property-features"> <div class="feature"><i>๐๏ธ</i> 6 Beds</div> <div class="feature"><i>๐ฟ</i> 4 Baths</div> <div class="feature"><i>๐</i> 4,100 sq.ft</div> </div> </div> </div> <div class="controls"> <div class="btn prev">โฎ</div> <div class="btn next">โฏ</div> </div> </div> <div class="thumbnails"> <div class="thumbnail active" data-index="0"> <img src="https://images.unsplash.com/photo-1600585154340-be6161a56a0c?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" alt="Luxury Home Thumbnail"> </div> <div class="thumbnail" data-index="1"> <img src="https://images.unsplash.com/photo-1613977257363-707ba9348227?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" alt="Urban Apartment Thumbnail"> </div> <div class="thumbnail" data-index="2"> <img src="https://images.unsplash.com/photo-1600607686527-6fb886090705?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1587&q=80" alt="Family Home Thumbnail"> </div> <div class="thumbnail" data-index="3"> <img src="https://images.unsplash.com/photo-1577495508048-b635879837f1?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1441&q=80" alt="Modern Villa Thumbnail"> </div> <div class="thumbnail" data-index="4"> <img src="https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1600&q=80" alt="Historic Property Thumbnail"> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', () => { // Wait for images to load const allImages = document.querySelectorAll('img'); let loadedImages = 0; allImages.forEach(img => { if (img.complete) { imageLoaded(); } else { img.addEventListener('load', imageLoaded); img.addEventListener('error', imageLoaded); } }); function imageLoaded() { loadedImages++; if (loadedImages === allImages.length) { setTimeout(() => { document.querySelector('.loading').classList.add('hidden'); startSlideshow(); }, 500); } } function startSlideshow() { const slides = document.querySelectorAll('.slide'); const thumbnails = document.querySelectorAll('.thumbnail'); const prevBtn = document.querySelector('.prev'); const nextBtn = document.querySelector('.next'); const progressBar = document.querySelector('.progress-bar'); let currentIndex = 0; let interval; const intervalTime = 6000; // Initialize progress bar function startProgressBar() { progressBar.style.width = '0%'; progressBar.style.transition = `width ${intervalTime}ms linear`; setTimeout(() => { progressBar.style.width = '100%'; }, 50); } // Reset progress bar function resetProgressBar() { progressBar.style.width = '0%'; progressBar.style.transition = 'none'; } // Set the active slide function setActiveSlide(index) { resetProgressBar(); // Remove active class from all slides and thumbnails slides.forEach(slide => slide.classList.remove('active')); thumbnails.forEach(thumb => thumb.classList.remove('active')); // Add active class to current slide and thumbnail slides[index].classList.add('active'); thumbnails[index].classList.add('active'); // Scroll the thumbnail into view thumbnails[index].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' }); // Restart progress bar startProgressBar(); // Update current index currentIndex = index; // Reset interval clearInterval(interval); interval = setInterval(nextSlide, intervalTime); } // Next slide function function nextSlide() { let newIndex = currentIndex + 1; if (newIndex >= slides.length) { newIndex = 0; } setActiveSlide(newIndex); } // Previous slide function function prevSlide() { let newIndex = currentIndex - 1; if (newIndex < 0) { newIndex = slides.length - 1; } setActiveSlide(newIndex); } // Add click event to thumbnails thumbnails.forEach(thumbnail => { thumbnail.addEventListener('click', () => { const index = parseInt(thumbnail.dataset.index); setActiveSlide(index); }); }); // Add click event to prev/next buttons prevBtn.addEventListener('click', prevSlide); nextBtn.addEventListener('click', nextSlide); // Add keyboard navigation document.addEventListener('keydown', (e) => { if (e.key === 'ArrowLeft') { prevSlide(); } else if (e.key === 'ArrowRight') { nextSlide(); } }); // Pause slideshow on hover const slideshowContainer = document.querySelector('.slideshow'); slideshowContainer.addEventListener('mouseenter', () => { clearInterval(interval); progressBar.style.transition = 'none'; }); slideshowContainer.addEventListener('mouseleave', () => { interval = setInterval(nextSlide, intervalTime); progressBar.style.transition = `width ${intervalTime}ms linear`; progressBar.style.width = '100%'; }); // Add touch swipe functionality let touchStartX = 0; let touchEndX = 0; slideshowContainer.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }, false); slideshowContainer.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }, false); function handleSwipe() { if (touchEndX < touchStartX - 50) { nextSlide(); } else if (touchEndX > touchStartX + 50) { prevSlide(); } } // Initialize slideshow startProgressBar(); interval = setInterval(nextSlide, intervalTime); // Add hover effects to feature badges const badges = document.querySelectorAll('.badge'); badges.forEach(badge => { badge.addEventListener('mouseenter', () => { badge.style.transform = 'scale(1.1)'; badge.style.backgroundColor = '#e67e00'; }); badge.addEventListener('mouseleave', () => { badge.style.transform = 'scale(1)'; badge.style.backgroundColor = ''; }); }); } }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Wanderlust Adventures</title> <style> :root { --primary-color: #ff6b6b; --secondary-color: #4ecdc4; --accent-color: #ffd166; --dark-color: #1a535c; --light-color: #f7fff7; --transition-speed: 0.6s; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Montserrat', sans-serif; } body { overflow: hidden; background-color: #111; color: var(--light-color); width: 700px; height: 700px; position: relative; } .slideshow-container { width: 100%; height: 100%; position: relative; } .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: opacity var(--transition-speed) ease-in-out; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; } .slide.active { opacity: 1; z-index: 5; } .slide-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(0.7); transform: scale(1.1); transition: transform 8s ease; } .slide.active .slide-bg { transform: scale(1); } .slide-content { position: relative; z-index: 10; text-align: center; padding: 2rem; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(5px); border-radius: 10px; max-width: 80%; transform: translateY(50px); opacity: 0; transition: all 1s ease 0.5s; } .slide.active .slide-content { transform: translateY(0); opacity: 1; } .location-title { font-size: 3rem; font-weight: 800; margin-bottom: 0.5rem; color: var(--light-color); text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); font-family: 'Playfair Display', serif; } .location-subtitle { font-size: 1.2rem; margin-bottom: 1.5rem; color: var(--accent-color); letter-spacing: 1px; text-transform: uppercase; } .location-description { font-size: 1rem; line-height: 1.6; margin-bottom: 1.5rem; } .location-highlight { display: inline-block; background-color: var(--primary-color); color: white; padding: 0.2rem 0.5rem; border-radius: 3px; font-weight: 600; margin: 0 0.2rem; } .explore-btn { display: inline-block; padding: 0.8rem 1.8rem; background-color: var(--secondary-color); color: white; text-decoration: none; border-radius: 50px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; border: none; cursor: pointer; transition: all 0.3s ease; position: relative; overflow: hidden; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); } .explore-btn:hover { background-color: var(--dark-color); transform: translateY(-3px); box-shadow: 0 7px 20px rgba(0, 0, 0, 0.3); } .explore-btn::after { content: ''; position: absolute; width: 100%; height: 100%; top: 0; left: -100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: 0.5s; } .explore-btn:hover::after { left: 100%; } .navigation { position: absolute; bottom: 20px; left: 0; width: 100%; display: flex; justify-content: center; z-index: 100; } .dot { width: 12px; height: 12px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.5); margin: 0 8px; cursor: pointer; transition: all 0.3s ease; border: 2px solid transparent; } .dot.active { background-color: var(--secondary-color); transform: scale(1.3); border-color: white; } .map-marker { position: absolute; width: 30px; height: 30px; background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="%23ff6b6b"><path d="M12 0c-4.4 0-8 3.6-8 8 0 5.4 7 13.4 7.3 13.7.2.2.5.3.7.3s.5-.1.7-.3c.3-.3 7.3-8.3 7.3-13.7 0-4.4-3.6-8-8-8zm0 12c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/></svg>'); background-size: contain; background-repeat: no-repeat; transform: translate(-50%, -100%); z-index: 15; opacity: 0; transition: opacity 0.3s ease, transform 0.3s ease; } .map-marker.active { opacity: 1; animation: bounce 2s infinite; } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translate(-50%, -100%); } 40% { transform: translate(-50%, -120%); } 60% { transform: translate(-50%, -110%); } } .prev-btn, .next-btn { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(0, 0, 0, 0.3); color: white; border: none; width: 50px; height: 50px; border-radius: 50%; font-size: 1.5rem; cursor: pointer; z-index: 100; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; } .prev-btn { left: 20px; } .next-btn { right: 20px; } .prev-btn:hover, .next-btn:hover { background: rgba(0, 0, 0, 0.6); transform: translateY(-50%) scale(1.1); } .compass { position: absolute; top: 20px; right: 20px; width: 60px; height: 60px; background-color: rgba(0, 0, 0, 0.5); border-radius: 50%; z-index: 100; display: flex; justify-content: center; align-items: center; overflow: hidden; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); } .compass-inner { width: 80%; height: 80%; background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" fill="none" stroke="white" stroke-width="1"/><polygon points="12,2 10,12 12,22 14,12" fill="%23ff6b6b"/><polygon points="22,12 12,10 2,12 12,14" fill="white"/><circle cx="12" cy="12" r="2" fill="white"/></svg>'); background-size: contain; background-repeat: no-repeat; transition: transform 0.3s ease; } .info-overlay { position: absolute; bottom: 70px; left: 20px; background-color: rgba(0, 0, 0, 0.7); backdrop-filter: blur(5px); border-radius: 10px; padding: 10px 15px; transform: translateX(-120%); transition: transform 0.5s ease; z-index: 90; max-width: 200px; } .info-overlay.active { transform: translateX(0); } .info-item { display: flex; align-items: center; margin: 8px 0; font-size: 0.9rem; } .info-icon { margin-right: 10px; width: 20px; height: 20px; fill: var(--accent-color); } @media (max-width: 700px) { .location-title { font-size: 2rem; } .location-subtitle { font-size: 1rem; } .slide-content { max-width: 90%; padding: 1.5rem; } .prev-btn, .next-btn { width: 40px; height: 40px; } } @media (max-width: 500px) { .location-title { font-size: 1.5rem; } .location-subtitle { font-size: 0.8rem; } .location-description { font-size: 0.9rem; } .explore-btn { padding: 0.6rem 1.2rem; font-size: 0.8rem; } .compass { width: 50px; height: 50px; } } /* Cinematic Transitions */ .slide-exit { animation: slideExit 1s forwards; } .slide-enter { animation: slideEnter 1s forwards; } @keyframes slideExit { 0% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(1.1); } } @keyframes slideEnter { 0% { opacity: 0; transform: scale(0.9); } 100% { opacity: 1; transform: scale(1); } } /* Loading Animation */ .loading { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: var(--dark-color); display: flex; justify-content: center; align-items: center; z-index: 1000; transition: opacity 0.5s ease; } .loading.hidden { opacity: 0; pointer-events: none; } .loading-animation { width: 100px; height: 100px; position: relative; } .loading-circle { position: absolute; width: 100%; height: 100%; border: 6px solid transparent; border-top-color: var(--secondary-color); border-radius: 50%; animation: spin 1.5s linear infinite; } .loading-circle:nth-child(2) { border: 6px solid transparent; border-bottom-color: var(--primary-color); animation: spin 2s linear infinite; } .loading-airplane { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 40px; height: 40px; animation: pulse 1.5s ease-in-out infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes pulse { 0%, 100% { transform: translate(-50%, -50%) scale(1); } 50% { transform: translate(-50%, -50%) scale(1.2); } } /* Custom Scrollbar */ .location-description::-webkit-scrollbar { width: 5px; } .location-description::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.1); border-radius: 10px; } .location-description::-webkit-scrollbar-thumb { background: var(--secondary-color); border-radius: 10px; } </style> <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;800&family=Playfair+Display:wght@700;800&display=swap" rel="stylesheet"> </head> <body> <div class="loading"> <div class="loading-animation"> <div class="loading-circle"></div> <div class="loading-circle"></div> <div class="loading-airplane"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#ffffff"> <path d="M22,16.5L12,21L2,16.5V19.5L12,24L22,19.5V16.5M5.68,14.16L12,17.17L18.32,14.16L21.66,12.5L12,7L2.34,12.5L5.68,14.16M12,4L7.5,12H11V20H13V12H16.5L12,4Z"/> </svg> </div> </div> </div> <div class="slideshow-container"> <!-- Bali Slide --> <div class="slide"> <img class="slide-bg" src="https://images.unsplash.com/photo-1537996194471-e657df975ab4?ixlib=rb-4.0.3&auto=format&fit=crop&w=1350&q=80" alt="Bali, Indonesia"> <div class="map-marker" style="top: 60%; left: 65%;"></div> <div class="slide-content"> <h1 class="location-title">Bali, Indonesia</h1> <h2 class="location-subtitle">Island of the Gods</h2> <p class="location-description"> Discover Bali's perfect blend of <span class="location-highlight">spiritual tranquility</span> and vibrant culture. Trek through emerald rice terraces in Ubud, experience sunrise yoga overlooking Mount Batur, and surf the legendary waves of Uluwatu. Each evening ends with a spectacular beachside feast under the stars. </p> <button class="explore-btn">Explore Package</button> </div> </div> <!-- Kyoto Slide --> <div class="slide"> <img class="slide-bg" src="https://images.unsplash.com/photo-1493976040374-85c8e12f0c0e?ixlib=rb-4.0.3&auto=format&fit=crop&w=1350&q=80" alt="Kyoto, Japan"> <div class="map-marker" style="top: 45%; left: 30%;"></div> <div class="slide-content"> <h1 class="location-title">Kyoto, Japan</h1> <h2 class="location-subtitle">Ancient Imperial Capital</h2> <p class="location-description"> Step back in time through Kyoto's <span class="location-highlight">1,600 Buddhist temples</span> and <span class="location-highlight">400 Shinto shrines</span>. Witness the mesmerizing dance of geishas in Gion, experience a traditional tea ceremony, and find serenity in the bamboo groves of Arashiyama. Spring cherry blossoms transform the city into a pink dreamscape. </p> <button class="explore-btn">Explore Package</button> </div> </div> <!-- Santorini Slide --> <div class="slide"> <img class="slide-bg" src="https://images.unsplash.com/photo-1570077188670-e3a8d69ac5ff?ixlib=rb-4.0.3&auto=format&fit=crop&w=1350&q=80" alt="Santorini, Greece"> <div class="map-marker" style="top: 40%; left: 50%;"></div> <div class="slide-content"> <h1 class="location-title">Santorini, Greece</h1> <h2 class="location-subtitle">Aegean Jewel</h2> <p class="location-description"> Perched on volcanic cliffs, Santorini's <span class="location-highlight">white-washed villages</span> cascade down to crystal blue waters. Wander through the narrow streets of Oia, taste volcanic wines at local vineyards, and sail into the caldera for the most photographed sunset on Earth. Each blue-domed church tells a story of Mediterranean charm. </p> <button class="explore-btn">Explore Package</button> </div> </div> <!-- Machu Picchu Slide --> <div class="slide"> <img class="slide-bg" src="https://images.unsplash.com/photo-1526392060635-9d6019884377?ixlib=rb-4.0.3&auto=format&fit=crop&w=1350&q=80" alt="Machu Picchu, Peru"> <div class="map-marker" style="top: 65%; left: 40%;"></div> <div class="slide-content"> <h1 class="location-title">Machu Picchu, Peru</h1> <h2 class="location-subtitle">Lost City of the Incas</h2> <p class="location-description"> Trek the legendary <span class="location-highlight">Inca Trail</span> to discover this 15th-century marvel perched 2,430 meters above sea level. Morning mist unveils terraced fields, sacred plazas, and astronomically aligned temples that have puzzled archaeologists for generations. The Andean peaks create a backdrop worthy of this UNESCO treasure. </p> <button class="explore-btn">Explore Package</button> </div> </div> <!-- Safari Slide --> <div class="slide"> <img class="slide-bg" src="https://images.unsplash.com/photo-1547970810-dc1eac37d174?ixlib=rb-4.0.3&auto=format&fit=crop&w=1350&q=80" alt="Serengeti, Tanzania"> <div class="map-marker" style="top: 55%; left: 55%;"></div> <div class="slide-content"> <h1 class="location-title">Serengeti, Tanzania</h1> <h2 class="location-subtitle">Home of the Great Migration</h2> <p class="location-description"> Witness nature's most spectacular show as <span class="location-highlight">1.5 million wildebeest</span> thunder across the plains in an eternal cycle. Dawn hot air balloon rides reveal lions stalking the tall grass below, while evening brings luxurious glamping under star-filled skies. The rhythm of Africa beats in every sunset and wildlife encounter. </p> <button class="explore-btn">Explore Package</button> </div> </div> <!-- Navigation Buttons --> <button class="prev-btn">❮</button> <button class="next-btn">❯</button> <!-- Navigation Dots --> <div class="navigation"></div> <!-- Compass Element --> <div class="compass"> <div class="compass-inner"></div> </div> <!-- Info Overlay --> <div class="info-overlay"> <div class="info-item"> <svg class="info-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8Z" /> </svg> <span id="climate">Tropical</span> </div> <div class="info-item"> <svg class="info-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M12,3C7.58,3 4,4.79 4,7C4,9.21 7.58,11 12,11C16.42,11 20,9.21 20,7C20,4.79 16.42,3 12,3M4,9V12C4,14.21 7.58,16 12,16C16.42,16 20,14.21 20,12V9C20,11.21 16.42,13 12,13C7.58,13 4,11.21 4,9M4,14V17C4,19.21 7.58,21 12,21C16.42,21 20,19.21 20,17V14C20,16.21 16.42,18 12,18C7.58,18 4,16.21 4,14Z" /> </svg> <span id="currency">IDR (Rupiah)</span> </div> <div class="info-item"> <svg class="info-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M12,2C14.76,2 17,4.24 17,7C17,9.76 14.76,12 12,12C9.24,12 7,9.76 7,7C7,4.24 9.24,2 12,2M12,4C10.34,4 9,5.34 9,7C9,8.66 10.34,10 12,10C13.66,10 15,8.66 15,7C15,5.34 13.66,4 12,4M12,13C16.42,13 20,15.79 20,19V20H4V19C4,15.79 7.58,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,19V18.1H18.1V19C18.1,16.36 14.97,14.9 12,14.9Z" /> </svg> <span id="language">Balinese, Indonesian</span> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Slide show functionality let currentSlide = 0; const slides = document.querySelectorAll('.slide'); const dots = document.querySelector('.navigation'); const prevBtn = document.querySelector('.prev-btn'); const nextBtn = document.querySelector('.next-btn'); const compass = document.querySelector('.compass-inner'); const infoOverlay = document.querySelector('.info-overlay'); const climateInfo = document.getElementById('climate'); const currencyInfo = document.getElementById('currency'); const languageInfo = document.getElementById('language'); const loading = document.querySelector('.loading'); // Location data const locationData = [ { climate: "Tropical", currency: "IDR (Rupiah)", language: "Balinese, Indonesian", compassDegree: 65 }, { climate: "Temperate", currency: "JPY (Yen)", language: "Japanese", compassDegree: 30 }, { climate: "Mediterranean", currency: "EUR (Euro)", language: "Greek", compassDegree: 140 }, { climate: "Highland", currency: "PEN (Sol)", language: "Spanish, Quechua", compassDegree: 250 }, { climate: "Savanna", currency: "TZS (Shilling)", language: "Swahili, English", compassDegree: 180 } ]; // Create navigation dots slides.forEach((_, index) => { const dot = document.createElement('div'); dot.classList.add('dot'); if (index === 0) dot.classList.add('active'); dot.addEventListener('click', () => { goToSlide(index); }); dots.appendChild(dot); }); // Show first slide slides[0].classList.add('active'); const firstMarker = slides[0].querySelector('.map-marker'); if (firstMarker) firstMarker.classList.add('active'); updateInfoOverlay(0); rotateCompass(locationData[0].compassDegree); // Previous button click prevBtn.addEventListener('click', () => { goToSlide(currentSlide - 1); }); // Next button click nextBtn.addEventListener('click', () => { goToSlide(currentSlide + 1); }); // Compass click compass.addEventListener('click', () => { infoOverlay.classList.toggle('active'); }); // Go to specific slide function goToSlide(slideIndex) { // Calculate the correct index with wrapping const nextSlide = (slideIndex + slides.length) % slides.length; if (nextSlide === currentSlide) return; // Remove active class from current slide and marker slides[currentSlide].classList.remove('active'); const currentMarker = slides[currentSlide].querySelector('.map-marker'); if (currentMarker) currentMarker.classList.remove('active'); // Add exit animation to current slide slides[currentSlide].classList.add('slide-exit'); // After a short delay, remove exit animation and add enter animation to next slide setTimeout(() => { slides[currentSlide].classList.remove('slide-exit'); // Update current slide index currentSlide = nextSlide; // Add active class to new current slide and marker slides[currentSlide].classList.add('active', 'slide-enter'); const nextMarker = slides[currentSlide].querySelector('.map-marker'); if (nextMarker) nextMarker.classList.add('active'); // Update navigation dots document.querySelectorAll('.dot').forEach((dot, index) => { dot.classList.toggle('active', index === currentSlide); }); // Update info and rotate compass updateInfoOverlay(currentSlide); rotateCompass(locationData[currentSlide].compassDegree); // Remove enter animation after it completes setTimeout(() => { slides[currentSlide].classList.remove('slide-enter'); }, 1000); }, 500); } // Update info overlay function updateInfoOverlay(index) { climateInfo.textContent = locationData[index].climate; currencyInfo.textContent = locationData[index].currency; languageInfo.textContent = locationData[index].language; // Show overlay briefly on slide change infoOverlay.classList.add('active'); setTimeout(() => { infoOverlay.classList.remove('active'); }, 3000); } // Rotate compass function rotateCompass(degree) { compass.style.transform = `rotate(${degree}deg)`; } // Keyboard navigation document.addEventListener('keydown', (e) => { if (e.key === 'ArrowLeft') { goToSlide(currentSlide - 1); } else if (e.key === 'ArrowRight') { goToSlide(currentSlide + 1); } }); // Auto slideshow let slideInterval = setInterval(() => { goToSlide(currentSlide + 1); }, 8000); // Pause slideshow on hover document.querySelector('.slideshow-container').addEventListener('mouseenter', () => { clearInterval(slideInterval); }); // Resume slideshow on mouseleave document.querySelector('.slideshow-container').addEventListener('mouseleave', () => { slideInterval = setInterval(() => { goToSlide(currentSlide + 1); }, 8000); }); // Explore button click document.querySelectorAll('.explore-btn').forEach(btn => { btn.addEventListener('click', (e) => { e.preventDefault(); const buttonText = btn.textContent; btn.textContent = 'Package Added!'; btn.style.backgroundColor = '#28a745'; setTimeout(() => { btn.textContent = buttonText; btn.style.backgroundColor = ''; }, 2000); }); }); // Touch swipe functionality let touchStartX = 0; let touchEndX = 0; document.querySelector('.slideshow-container').addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }); document.querySelector('.slideshow-container').addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }); function handleSwipe() { if (touchEndX < touchStartX - 50) { // Swipe left, next slide goToSlide(currentSlide + 1); } else if (touchEndX > touchStartX + 50) { // Swipe right, previous slide goToSlide(currentSlide - 1); } } // Hide loading screen after a delay setTimeout(() => { loading.classList.add('hidden'); }, 1500); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Luminous | Digital Art Gallery</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Montserrat', sans-serif; } :root { --main-bg: #0a0a0f; --accent-purple: #9d4edd; --accent-blue: #3a86ff; --accent-pink: #ff0080; --text-light: #f8f9fa; --text-secondary: #adb5bd; } @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;600;700&display=swap'); body { background-color: var(--main-bg); color: var(--text-light); height: 100vh; width: 100%; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; } .container { width: 700px; height: 700px; position: relative; overflow: hidden; } header { padding: 20px 25px; display: flex; justify-content: space-between; align-items: center; position: absolute; top: 0; left: 0; width: 100%; z-index: 100; background: linear-gradient(to bottom, rgba(10, 10, 15, 0.9), transparent); } .logo { font-size: 24px; font-weight: 700; background: linear-gradient(45deg, var(--accent-purple), var(--accent-blue)); -webkit-background-clip: text; background-clip: text; color: transparent; letter-spacing: 1px; } nav ul { display: flex; gap: 15px; list-style: none; } nav a { color: var(--text-light); text-decoration: none; font-size: 14px; position: relative; padding-bottom: 5px; transition: color 0.3s ease; } nav a::after { content: ''; position: absolute; left: 0; bottom: 0; width: 0; height: 2px; background: var(--accent-pink); transition: width 0.3s ease; } nav a:hover { color: var(--accent-pink); } nav a:hover::after { width: 100%; } .gallery { height: 100%; width: 100%; position: relative; } .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transform: scale(1.05); transition: opacity 1s ease, transform 1s ease; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 80px 30px 40px 30px; } .slide.active { opacity: 1; transform: scale(1); z-index: 10; } .artwork { width: 90%; height: 65%; border-radius: 8px; overflow: hidden; position: relative; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); } .artwork:hover { transform: scale(1.02); } .artwork img { width: 100%; height: 100%; object-fit: cover; transition: filter 0.4s ease; } .artwork:hover img { filter: brightness(0.7); } .artwork-overlay { position: absolute; bottom: -100%; left: 0; width: 100%; height: 100%; background: linear-gradient(to top, rgba(10, 10, 15, 0.95), rgba(10, 10, 15, 0.8) 30%, transparent 70%); display: flex; flex-direction: column; justify-content: flex-end; padding: 30px; transition: bottom 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275); opacity: 0; } .artwork:hover .artwork-overlay { bottom: 0; opacity: 1; } .artwork-info h3 { font-size: 22px; margin-bottom: 5px; transform: translateY(20px); opacity: 0; transition: transform 0.5s ease, opacity 0.5s ease; transition-delay: 0.1s; } .artwork:hover .artwork-info h3 { transform: translateY(0); opacity: 1; } .artist-info { display: flex; align-items: center; margin-bottom: 15px; transform: translateY(20px); opacity: 0; transition: transform 0.5s ease, opacity 0.5s ease; transition-delay: 0.2s; } .artwork:hover .artist-info { transform: translateY(0); opacity: 1; } .artist-avatar { width: 40px; height: 40px; border-radius: 50%; overflow: hidden; margin-right: 10px; border: 2px solid var(--accent-purple); } .artist-avatar img { width: 100%; height: 100%; object-fit: cover; } .artist-name { font-size: 14px; font-weight: 600; color: var(--accent-purple); } .artwork-description { font-size: 14px; line-height: 1.6; color: var(--text-secondary); margin-bottom: 20px; max-height: 100px; overflow-y: auto; transform: translateY(20px); opacity: 0; transition: transform 0.5s ease, opacity 0.5s ease; transition-delay: 0.3s; } .artwork:hover .artwork-description { transform: translateY(0); opacity: 1; } .artwork-details { display: flex; gap: 15px; transform: translateY(20px); opacity: 0; transition: transform 0.5s ease, opacity 0.5s ease; transition-delay: 0.4s; } .artwork:hover .artwork-details { transform: translateY(0); opacity: 1; } .detail { background-color: rgba(255, 255, 255, 0.1); padding: 5px 10px; border-radius: 20px; font-size: 12px; display: flex; align-items: center; gap: 5px; } .tags { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 8px; transform: translateY(20px); opacity: 0; transition: transform 0.5s ease, opacity 0.5s ease; transition-delay: 0.5s; } .artwork:hover .tags { transform: translateY(0); opacity: 1; } .tag { background: linear-gradient(45deg, var(--accent-purple), var(--accent-blue)); color: var(--text-light); padding: 5px 10px; border-radius: 20px; font-size: 10px; font-weight: 600; } .artwork-meta { width: 90%; display: flex; justify-content: space-between; align-items: center; margin-top: 20px; } .artwork-title { font-size: 28px; font-weight: 700; margin-bottom: 5px; } .artwork-subtitle { color: var(--text-secondary); font-size: 14px; } .controls { display: flex; gap: 15px; } .control-btn { width: 45px; height: 45px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.1); display: flex; justify-content: center; align-items: center; cursor: pointer; transition: background-color 0.3s ease, transform 0.3s ease; } .control-btn:hover { background-color: var(--accent-purple); transform: scale(1.1); } .control-btn svg { width: 20px; height: 20px; fill: var(--text-light); } .progress-container { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; gap: 8px; } .progress-dot { width: 12px; height: 12px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.2); cursor: pointer; transition: transform 0.3s ease, background-color 0.3s ease; } .progress-dot.active { background-color: var(--accent-purple); transform: scale(1.3); } .progress-dot:hover { background-color: rgba(255, 255, 255, 0.5); } .side-line { position: absolute; height: 70%; width: 2px; background: linear-gradient(to bottom, transparent, var(--accent-purple), transparent); left: 20px; top: 15%; z-index: 5; } .glow { position: absolute; width: 300px; height: 300px; border-radius: 50%; background: radial-gradient(circle, var(--accent-blue) 0%, transparent 70%); opacity: 0.1; filter: blur(40px); z-index: 1; transition: transform 0.5s ease; } .glow.one { top: -100px; right: -100px; } .glow.two { bottom: -100px; left: -100px; background: radial-gradient(circle, var(--accent-pink) 0%, transparent 70%); } /* Responsive Adjustments */ @media (max-width: 700px) { .container { width: 100%; height: 100vh; } header { padding: 15px; } .logo { font-size: 20px; } nav ul { gap: 10px; } nav a { font-size: 12px; } .slide { padding: 70px 20px 30px 20px; } .artwork { width: 95%; height: 60%; } .artwork-meta { width: 95%; flex-direction: column; align-items: flex-start; gap: 10px; } .artwork-title { font-size: 22px; } .controls { align-self: center; } .control-btn { width: 40px; height: 40px; } .side-line { display: none; } } @media (max-width: 500px) { .artwork-overlay { padding: 15px; } .artwork-info h3 { font-size: 18px; } .artwork-description { font-size: 12px; max-height: 80px; } .artist-avatar { width: 30px; height: 30px; } } /* Animation for slide transitions */ @keyframes fadeIn { from { opacity: 0; transform: scale(1.05); } to { opacity: 1; transform: scale(1); } } @keyframes fadeOut { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.95); } } .slide.fade-in { animation: fadeIn 1s forwards; } .slide.fade-out { animation: fadeOut 1s forwards; } /* Animated cursor */ .custom-cursor { position: fixed; width: 20px; height: 20px; border-radius: 50%; background-color: transparent; border: 2px solid var(--accent-purple); pointer-events: none; transform: translate(-50%, -50%); transition: width 0.3s, height 0.3s, border-color 0.3s; z-index: 9999; mix-blend-mode: difference; } .custom-cursor.active { width: 50px; height: 50px; border-color: var(--accent-pink); } /* Grain overlay */ .grain { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('data:image/svg+xml;charset=utf8,%3Csvg viewBox%3D%220 0 512 512%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cfilter id%3D%22noise%22%3E%3CfeTurbulence baseFrequency%3D%220.7%22 numOctaves%3D%222%22 type%3D%22fractalNoise%22 stitchTiles%3D%22stitch%22%2F%3E%3C%2Ffilter%3E%3Crect width%3D%22100%25%22 height%3D%22100%25%22 filter%3D%22url%28%23noise%29%22 opacity%3D%220.08%22%2F%3E%3C%2Fsvg%3E'); pointer-events: none; z-index: 999; opacity: 0.03; } </style> </head> <body> <div class="custom-cursor"></div> <div class="container"> <div class="grain"></div> <div class="glow one"></div> <div class="glow two"></div> <div class="side-line"></div> <header> <div class="logo">LUMINOUS</div> <nav> <ul> <li><a href="#">Gallery</a></li> <li><a href="#">Artists</a></li> <li><a href="#">About</a></li> </ul> </nav> </header> <div class="gallery"> <div class="slide active" data-index="0"> <div class="artwork"> <img src="https://images.unsplash.com/photo-1617791160505-6f00504e3519?ixlib=rb-4.0.3&auto=format&fit=crop&w=1000&q=80" alt="Neon Spectrum"> <div class="artwork-overlay"> <div class="artwork-info"> <h3>Neon Spectrum</h3> <div class="artist-info"> <div class="artist-avatar"> <img src="https://images.unsplash.com/photo-1438761681033-6461ffad8d80?ixlib=rb-4.0.3&auto=format&fit=crop&w=200&q=80" alt="Mia Zhang"> </div> <div class="artist-name">Mia Zhang</div> </div> <p class="artwork-description">An exploration of how color psychology affects digital perception. Created using neural networks trained on 20th century neon signage, this piece blends nostalgia with futuristic light manipulation techniques.</p> <div class="artwork-details"> <div class="detail"> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 2023 </div> <div class="detail"> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg> Tokyo </div> </div> <div class="tags"> <span class="tag">Neural Art</span> <span class="tag">Neon</span> <span class="tag">Generative</span> </div> </div> </div> </div> <div class="artwork-meta"> <div> <h2 class="artwork-title">Neon Spectrum</h2> <p class="artwork-subtitle">A neural interpretation of light</p> </div> <div class="controls"> <div class="control-btn prev"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg> </div> <div class="control-btn next"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg> </div> </div> </div> </div> <div class="slide" data-index="1"> <div class="artwork"> <img src="https://images.unsplash.com/photo-1633621412960-6df85eff8c85?ixlib=rb-4.0.3&auto=format&fit=crop&w=1000&q=80" alt="Digital Dreamscape"> <div class="artwork-overlay"> <div class="artwork-info"> <h3>Digital Dreamscape</h3> <div class="artist-info"> <div class="artist-avatar"> <img src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?ixlib=rb-4.0.3&auto=format&fit=crop&w=200&q=80" alt="Alex Rivera"> </div> <div class="artist-name">Alex Rivera</div> </div> <p class="artwork-description">Combining blockchain architecture with dreamlike imagery, this piece visualizes data flow as an ethereal landscape. Each element represents actual transaction data rendered through procedural algorithms.</p> <div class="artwork-details"> <div class="detail"> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 2023 </div> <div class="detail"> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg> Barcelona </div> </div> <div class="tags"> <span class="tag">Blockchain</span> <span class="tag">Procedural</span> <span class="tag">Data Viz</span> </div> </div> </div> </div> <div class="artwork-meta"> <div> <h2 class="artwork-title">Digital Dreamscape</h2> <p class="artwork-subtitle">Data visualization meets surrealism</p> </div> <div class="controls"> <div class="control-btn prev"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg> </div> <div class="control-btn next"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg> </div> </div> </div> </div> <div class="slide" data-index="2"> <div class="artwork"> <img src="https://images.unsplash.com/photo-1550745165-9bc0b252726f?ixlib=rb-4.0.3&auto=format&fit=crop&w=1000&q=80" alt="Quantum Reflections"> <div class="artwork-overlay"> <div class="artwork-info"> <h3>Quantum Reflections</h3> <div class="artist-info"> <div class="artist-avatar"> <img src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-4.0.3&auto=format&fit=crop&w=200&q=80" alt="Sophia Chen"> </div> <div class="artist-name">Sophia Chen</div> </div> <p class="artwork-description">Inspired by quantum computing algorithms, this artwork uses particle simulation to create dynamic light patterns that never repeat. It responds to noise input from its environment, making each viewing unique.</p> <div class="artwork-details"> <div class="detail"> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 2022 </div> <div class="detail"> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg> Singapore </div> </div> <div class="tags"> <span class="tag">Quantum</span> <span class="tag">Interactive</span> <span class="tag">Particle</span> </div> </div> </div> </div> <div class="artwork-meta"> <div> <h2 class="artwork-title">Quantum Reflections</h2> <p class="artwork-subtitle">The unpredictable beauty of algorithms</p> </div> <div class="controls"> <div class="control-btn prev"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg> </div> <div class="control-btn next"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg> </div> </div> </div> </div> <div class="slide" data-index="3"> <div class="artwork"> <img src="https://images.unsplash.com/photo-1604871000636-074fa5117945?ixlib=rb-4.0.3&auto=format&fit=crop&w=1000&q=80" alt="Cybernetic Garden"> <div class="artwork-overlay"> <div class="artwork-info"> <h3>Cybernetic Garden</h3> <div class="artist-info"> <div class="artist-avatar"> <img src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?ixlib=rb-4.0.3&auto=format&fit=crop&w=200&q=80" alt="Marcus Johnson"> </div> <div class="artist-name">Marcus Johnson</div> </div> <p class="artwork-description">This piece uses machine learning to simulate plant growth patterns based on climate data from endangered ecosystems. Each digital plant responds to real-time environmental data, creating an evolving reflection of our planet's changing biosphere.</p> <div class="artwork-details"> <div class="detail"> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> 2023 </div> <div class="detail"> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg> Amsterdam </div> </div> <div class="tags"> <span class="tag">Biometric</span> <span class="tag">ML Art</span> <span class="tag">Eco-Digital</span> </div> </div> </div> </div> <div class="artwork-meta"> <div> <h2 class="artwork-title">Cybernetic Garden</h2> <p class="artwork-subtitle">Digital flora with environmental awareness</p> </div> <div class="controls"> <div class="control-btn prev"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/></svg> </div> <div class="control-btn next"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/></svg> </div> </div> </div> </div> </div> <div class="progress-container"> <div class="progress-dot active" data-index="0"></div> <div class="progress-dot" data-index="1"></div> <div class="progress-dot" data-index="2"></div> <div class="progress-dot" data-index="3"></div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const slides = document.querySelectorAll('.slide'); const dots = document.querySelectorAll('.progress-dot'); const prevBtn = document.querySelectorAll('.prev'); const nextBtn = document.querySelectorAll('.next'); const cursor = document.querySelector('.custom-cursor'); const glowElements = document.querySelectorAll('.glow'); let currentSlide = 0; let autoSlideInterval; let isTransitioning = false; // Custom cursor document.addEventListener('mousemove', function(e) { cursor.style.left = e.clientX + 'px'; cursor.style.top = e.clientY + 'px'; // Move glows slightly with mouse for parallax effect glowElements.forEach(glow => { const moveX = (e.clientX - window.innerWidth / 2) * 0.02; const moveY = (e.clientY - window.innerHeight / 2) * 0.02; glow.style.transform = `translate(${moveX}px, ${moveY}px)`; }); }); document.addEventListener('mousedown', function() { cursor.classList.add('active'); }); document.addEventListener('mouseup', function() { cursor.classList.remove('active'); }); // Slide navigation functions function showSlide(index) { if (isTransitioning) return; isTransitioning = true; // Normalize the index if (index < 0) index = slides.length - 1; if (index >= slides.length) index = 0; // Find current active slide const activeSlide = document.querySelector('.slide.active'); activeSlide.classList.add('fade-out'); // After current slide fades out setTimeout(() => { activeSlide.classList.remove('active', 'fade-out'); slides[index].classList.add('active', 'fade-in'); // After new slide fades in setTimeout(() => { slides[index].classList.remove('fade-in'); isTransitioning = false; }, 600); }, 600); // Update dots dots.forEach(dot => dot.classList.remove('active')); dots[index].classList.add('active'); currentSlide = index; // Reset auto slide timer clearInterval(autoSlideInterval); startAutoSlide(); } function nextSlide() { showSlide(currentSlide + 1); } function prevSlide() { showSlide(currentSlide - 1); } function startAutoSlide() { autoSlideInterval = setInterval(nextSlide, 8000); } // Set up event listeners nextBtn.forEach(btn => { btn.addEventListener('click', nextSlide); }); prevBtn.forEach(btn => { btn.addEventListener('click', prevSlide); }); dots.forEach(dot => { dot.addEventListener('click', function() { const index = parseInt(this.getAttribute('data-index')); showSlide(index); }); }); // Handle keyboard navigation document.addEventListener('keydown', function(e) { if (e.key === 'ArrowRight') { nextSlide(); } else if (e.key === 'ArrowLeft') { prevSlide(); } }); // Start auto slide startAutoSlide(); // Handle touch events for mobile let touchStartX = 0; let touchEndX = 0; document.addEventListener('touchstart', function(e) { touchStartX = e.changedTouches[0].screenX; }); document.addEventListener('touchend', function(e) { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }); function handleSwipe() { if (touchEndX < touchStartX - 50) { nextSlide(); } else if (touchEndX > touchStartX + 50) { prevSlide(); } } // Make sure artwork hover effect works on mobile const artworks = document.querySelectorAll('.artwork'); artworks.forEach(artwork => { artwork.addEventListener('touchstart', function() { // Toggle the hover state on touch const overlay = this.querySelector('.artwork-overlay'); const computedStyle = window.getComputedStyle(overlay); if (computedStyle.opacity === '0') { this.classList.add('hover-active'); // Simulate hover styles overlay.style.bottom = '0'; overlay.style.opacity = '1'; const elements = this.querySelectorAll('.artwork-info h3, .artist-info, .artwork-description, .artwork-details, .tags'); elements.forEach(el => { el.style.transform = 'translateY(0)'; el.style.opacity = '1'; }); } else { this.classList.remove('hover-active'); // Remove hover styles overlay.style.bottom = '-100%'; overlay.style.opacity = '0'; const elements = this.querySelectorAll('.artwork-info h3, .artist-info, .artwork-description, .artwork-details, .tags'); elements.forEach(el => { el.style.transform = 'translateY(20px)'; el.style.opacity = '0'; }); } }); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Polaris Corporate Slide Deck</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } body { width: 100%; height: 100vh; background-color: #f5f5f5; overflow: hidden; position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; } /* Overall deck styles */ .presentation-container { width: 100%; height: 100%; display: flex; flex-direction: column; position: relative; overflow: hidden; background-color: #2A2A2A; color: #f5f5f5; } /* Progress indicator */ .progress-container { position: absolute; top: 0; left: 0; width: 100%; height: 4px; background-color: #3A3A3A; z-index: 10; } .progress-bar { height: 100%; width: 0; background-color: #4D90FE; transition: width 0.3s ease; } /* Navigation controls */ .slide-controls { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; gap: 15px; z-index: 10; } .control-btn { width: 40px; height: 40px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, 0.2); background: rgba(0, 0, 0, 0.2); color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.3s ease; } .control-btn:hover { background: rgba(0, 0, 0, 0.4); border-color: #4D90FE; transform: scale(1.1); } .slide-counter { position: absolute; bottom: 20px; right: 20px; font-size: 12px; letter-spacing: 1px; color: rgba(255, 255, 255, 0.7); z-index: 10; } /* Slides container */ .slides-wrapper { flex: 1; position: relative; overflow: hidden; } .slides { position: absolute; top: 0; left: 0; width: 100%; height: 100%; transition: transform 0.6s cubic-bezier(0.65, 0, 0.35, 1); display: flex; } .slide { min-width: 100%; height: 100%; padding: 60px; position: relative; overflow: hidden; } /* Slide backgrounds & content */ .slide-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; } .slide-content { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease, transform 0.6s ease; max-width: 1000px; margin: 0 auto; height: 100%; display: flex; flex-direction: column; justify-content: center; } .slide.active .slide-content { opacity: 1; transform: translateY(0); } /* Typography styles */ h1 { font-size: 3.5rem; font-weight: 800; line-height: 1.1; margin-bottom: 30px; position: relative; } h1::after { content: ''; position: absolute; bottom: -15px; left: 0; width: 80px; height: 4px; background-color: #4D90FE; } h2 { font-size: 2.5rem; font-weight: 700; margin-bottom: 20px; } p { font-size: 1.2rem; line-height: 1.6; margin-bottom: 20px; font-weight: 300; max-width: 700px; } .highlight { color: #4D90FE; font-weight: 600; } /* Specific slide layouts */ .slide-title { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; } .slide-title h1 { font-size: 4rem; opacity: 0; transform: translateX(-50px); animation: slideInTitle 0.8s forwards 0.3s; } .slide-title p { opacity: 0; transform: translateY(20px); animation: fadeUp 0.8s forwards 0.6s; } .company-name { position: absolute; bottom: 80px; left: 60px; font-size: 14px; letter-spacing: 2px; text-transform: uppercase; color: rgba(255, 255, 255, 0.5); } /* Grid layouts */ .grid-container { display: grid; grid-template-columns: repeat(2, 1fr); gap: 40px; margin-top: 40px; } .grid-item { background: rgba(0, 0, 0, 0.2); padding: 30px; border-radius: 6px; transition: transform 0.3s ease, box-shadow 0.3s ease; } .grid-item:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); background: rgba(0, 0, 0, 0.3); } /* Stat blocks */ .stats-container { display: flex; gap: 40px; margin-top: 40px; } .stat-block { flex: 1; padding: 20px; text-align: center; position: relative; overflow: hidden; } .stat-number { font-size: 3.5rem; font-weight: 700; margin-bottom: 10px; color: #4D90FE; position: relative; display: inline-block; } .stat-number::after { content: ''; position: absolute; bottom: 5px; left: 0; width: 100%; height: 2px; background-color: rgba(77, 144, 254, 0.3); } .stat-label { font-size: 1rem; font-weight: 400; text-transform: uppercase; letter-spacing: 1px; } /* Chart placeholders */ .chart-container { width: 100%; height: 300px; background: rgba(0, 0, 0, 0.2); border-radius: 6px; margin-top: 40px; position: relative; overflow: hidden; } .chart-bars { display: flex; align-items: flex-end; justify-content: space-around; height: 220px; padding: 20px; padding-bottom: 0; } .chart-bar { width: 40px; background: #4D90FE; transform: scaleY(0); transform-origin: bottom; transition: transform 1s cubic-bezier(0.34, 1.56, 0.64, 1); } .chart-bar-label { text-align: center; font-size: 12px; padding: 10px 0; } .chart-legend { display: flex; justify-content: flex-end; gap: 20px; margin-top: 20px; font-size: 12px; } .legend-item { display: flex; align-items: center; gap: 6px; } .legend-color { width: 16px; height: 16px; border-radius: 4px; background-color: #4D90FE; } /* Timeline layout */ .timeline { margin-top: 40px; position: relative; padding-left: 30px; } .timeline::before { content: ''; position: absolute; top: 0; left: 0; width: 2px; height: 100%; background: rgba(77, 144, 254, 0.3); } .timeline-item { margin-bottom: 30px; position: relative; opacity: 0; transform: translateX(20px); transition: all 0.5s ease; } .timeline-item::before { content: ''; position: absolute; top: 6px; left: -34px; width: 10px; height: 10px; border-radius: 50%; background: #4D90FE; box-shadow: 0 0 0 4px rgba(77, 144, 254, 0.3); } .timeline-date { font-size: 0.8rem; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 5px; color: #4D90FE; } .timeline-title { font-size: 1.2rem; font-weight: 600; margin-bottom: 5px; } /* Animated pattern elements */ .pattern-dot { position: absolute; width: 4px; height: 4px; background-color: rgba(255, 255, 255, 0.1); border-radius: 50%; } /* Animated accent line */ .accent-line { position: absolute; background-color: rgba(77, 144, 254, 0.2); } /* Animations */ @keyframes slideInTitle { to { opacity: 1; transform: translateX(0); } } @keyframes fadeUp { to { opacity: 1; transform: translateY(0); } } /* Responsive adjustments */ @media (max-width: 700px) { .slide { padding: 40px 20px; } h1 { font-size: 2.5rem; } h2 { font-size: 1.8rem; } p { font-size: 1rem; } .slide-title h1 { font-size: 2.5rem; } .grid-container { grid-template-columns: 1fr; gap: 20px; } .stats-container { flex-direction: column; gap: 20px; } .chart-container { height: 250px; } .chart-bar { width: 30px; } .company-name { left: 20px; bottom: 60px; } } /* Additional animation for slide entrance */ .slide.active .chart-bar { transform: scaleY(1); } .slide.active .timeline-item { opacity: 1; transform: translateX(0); transition-delay: calc(var(--i) * 0.1s); } </style> </head> <body> <div class="presentation-container"> <div class="progress-container"> <div class="progress-bar" id="progress"></div> </div> <div class="slides-wrapper"> <div class="slides" id="slides"> <!-- Slide 1: Title --> <div class="slide slide-title active" id="slide-1"> <div class="slide-bg"></div> <div class="slide-content"> <h1>POLARIS <span class="highlight">QUARTERLY</span><br>BUSINESS REVIEW</h1> <p>Strategic insights and forward momentum for Q3 2023</p> <div class="company-name">Polaris Industries Inc.</div> </div> <!-- Animated background pattern --> <div class="accent-line" style="top: 20%; right: 0; width: 200px; height: 2px;"></div> <div class="accent-line" style="bottom: 30%; left: 0; width: 150px; height: 2px;"></div> </div> <!-- Slide 2: Key Objectives --> <div class="slide" id="slide-2"> <div class="slide-bg"></div> <div class="slide-content"> <h2>Q3 <span class="highlight">Strategic</span> Objectives</h2> <p>Our focused approach to accelerating growth and operational excellence in the current market landscape.</p> <div class="grid-container"> <div class="grid-item"> <h3>Market Expansion</h3> <p>Penetrating emerging markets in Southeast Asia with a targeted 27% increase in distribution channels.</p> </div> <div class="grid-item"> <h3>Product Innovation</h3> <p>Accelerating R&D for our sustainable product line with 4 new launches scheduled for Q4.</p> </div> <div class="grid-item"> <h3>Operational Efficiency</h3> <p>Implementing AI-driven supply chain optimization to reduce logistics costs by 18%.</p> </div> <div class="grid-item"> <h3>Talent Development</h3> <p>Expanding our leadership incubator program to cultivate next-gen executive talent.</p> </div> </div> </div> </div> <!-- Slide 3: Performance Metrics --> <div class="slide" id="slide-3"> <div class="slide-bg"></div> <div class="slide-content"> <h2>Q3 <span class="highlight">Performance</span> Metrics</h2> <p>Year-over-year growth has exceeded projections across key business segments, particularly in our digital transformation initiatives.</p> <div class="stats-container"> <div class="stat-block"> <div class="stat-number">42%</div> <div class="stat-label">Revenue Growth</div> </div> <div class="stat-block"> <div class="stat-number">16.8M</div> <div class="stat-label">New Customers</div> </div> <div class="stat-block"> <div class="stat-number">98%</div> <div class="stat-label">Client Retention</div> </div> </div> <div class="chart-container"> <div class="chart-bars"> <div class="chart-bar" style="height: 65%; transition-delay: 0.1s;"></div> <div class="chart-bar" style="height: 80%; transition-delay: 0.2s;"></div> <div class="chart-bar" style="height: 50%; transition-delay: 0.3s;"></div> <div class="chart-bar" style="height: 95%; transition-delay: 0.4s;"></div> <div class="chart-bar" style="height: 70%; transition-delay: 0.5s;"></div> </div> <div class="chart-bar-label">Quarterly Performance Comparison</div> <div class="chart-legend"> <div class="legend-item"> <div class="legend-color"></div> <span>Current Performance</span> </div> </div> </div> </div> </div> <!-- Slide 4: Project Timeline --> <div class="slide" id="slide-4"> <div class="slide-bg"></div> <div class="slide-content"> <h2>Strategic <span class="highlight">Roadmap</span></h2> <p>Our phased approach to implementing key initiatives through Q4 2023 and beyond.</p> <div class="timeline"> <div class="timeline-item" style="--i: 1;"> <div class="timeline-date">October 2023</div> <div class="timeline-title">Enterprise Platform Migration</div> <p>Complete transition to cloud-native architecture with zero downtime.</p> </div> <div class="timeline-item" style="--i: 2;"> <div class="timeline-date">November 2023</div> <div class="timeline-title">APAC Market Entry</div> <p>Launch operations in Singapore and Malaysia with localized solutions.</p> </div> <div class="timeline-item" style="--i: 3;"> <div class="timeline-date">December 2023</div> <div class="timeline-title">Product Portfolio Expansion</div> <p>Release of Polaris Quantum analytics suite with predictive capabilities.</p> </div> <div class="timeline-item" style="--i: 4;"> <div class="timeline-date">Q1 2024</div> <div class="timeline-title">Strategic Acquisitions</div> <p>Finalize integration of TechVault systems to enhance security offerings.</p> </div> </div> </div> </div> <!-- Slide 5: Conclusion --> <div class="slide" id="slide-5"> <div class="slide-bg"></div> <div class="slide-content"> <h2>Moving <span class="highlight">Forward</span></h2> <p>Our coordinated strategy positions us to capitalize on emerging opportunities while maintaining operational excellence.</p> <div class="grid-container" style="grid-template-columns: 1fr;"> <div class="grid-item"> <h3>Key Takeaways</h3> <ul style="margin-left: 20px; line-height: 1.8;"> <li>Market expansion initiatives are on track with 32% completion of annual targets</li> <li>Digital transformation program has delivered 4.2x ROI in first six months</li> <li>Customer acquisition costs reduced by 28% through AI-powered targeting</li> <li>Sustainability initiatives projected to deliver 15% cost savings by year-end</li> </ul> </div> </div> <div style="margin-top: 40px;"> <p>Questions or discussion points? Please reach out to the strategy team at <span class="highlight">[email protected]</span></p> </div> </div> </div> </div> </div> <div class="slide-controls"> <div class="control-btn" id="prev"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M15 18L9 12L15 6" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="control-btn" id="next"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9 6L15 12L9 18" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> </div> <div class="slide-counter" id="counter">1 / 5</div> </div> <script> document.addEventListener('DOMContentLoaded', () => { // Variables const slides = document.querySelectorAll('.slide'); const slidesContainer = document.getElementById('slides'); const prevBtn = document.getElementById('prev'); const nextBtn = document.getElementById('next'); const counter = document.getElementById('counter'); const progressBar = document.getElementById('progress'); let currentSlide = 0; const totalSlides = slides.length; // Create pattern dots for (let i = 0; i < 50; i++) { const dot = document.createElement('div'); dot.classList.add('pattern-dot'); dot.style.left = `${Math.random() * 100}%`; dot.style.top = `${Math.random() * 100}%`; document.querySelector('.presentation-container').appendChild(dot); } // Update slide position function updateSlide() { slidesContainer.style.transform = `translateX(-${currentSlide * 100}%)`; // Update active state slides.forEach((slide, index) => { slide.classList.toggle('active', index === currentSlide); }); // Update counter counter.textContent = `${currentSlide + 1} / ${totalSlides}`; // Update progress bar const progress = ((currentSlide + 1) / totalSlides) * 100; progressBar.style.width = `${progress}%`; } // Next slide function nextSlide() { if (currentSlide < totalSlides - 1) { currentSlide++; updateSlide(); } } // Previous slide function prevSlide() { if (currentSlide > 0) { currentSlide--; updateSlide(); } } // Event listeners nextBtn.addEventListener('click', nextSlide); prevBtn.addEventListener('click', prevSlide); // Keyboard navigation document.addEventListener('keydown', (e) => { if (e.key === 'ArrowRight') { nextSlide(); } else if (e.key === 'ArrowLeft') { prevSlide(); } }); // Touch navigation let touchStartX = 0; let touchEndX = 0; document.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].screenX; }); document.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].screenX; handleSwipe(); }); function handleSwipe() { if (touchEndX < touchStartX - 50) { nextSlide(); } if (touchEndX > touchStartX + 50) { prevSlide(); } } // Initialize updateSlide(); // Add animation delay to timeline items document.querySelectorAll('.timeline-item').forEach((item, index) => { item.style.transitionDelay = `${index * 0.1}s`; }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Fashion Lookbook Carousel</title> <style> :root { --primary-color: #f5f5f5; --accent-color: #c09e6b; --text-color: #333; --overlay-color: rgba(0, 0, 0, 0.15); --serif-font: 'Cormorant Garamond', serif; --sans-font: 'Montserrat', sans-serif; --transition-speed: 0.6s; } * { margin: 0; padding: 0; box-sizing: border-box; } @import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@300;400;500;600&family=Montserrat:wght@300;400;500&display=swap'); body { font-family: var(--serif-font); overflow: hidden; height: 100vh; background-color: var(--primary-color); } .carousel-container { position: relative; width: 100%; height: 100%; overflow: hidden; } .slide-container { display: flex; width: 100%; height: 100%; transition: transform var(--transition-speed) cubic-bezier(0.25, 1, 0.5, 1); } .slide { flex: 0 0 100%; position: relative; overflow: hidden; } .slide-image { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s ease-out; transform: scale(1.1); } .slide.active .slide-image { transform: scale(1); } .slide-content { position: absolute; bottom: 10%; left: 0; width: 100%; padding: 0 5%; z-index: 10; opacity: 0; transform: translateY(30px); transition: opacity 0.8s ease, transform 0.8s ease; } .slide.active .slide-content { opacity: 1; transform: translateY(0); } .slide-title { font-family: var(--serif-font); font-weight: 400; font-size: 2.4rem; color: white; margin-bottom: 0.5rem; letter-spacing: 1px; text-shadow: 0 1px 10px rgba(0, 0, 0, 0.3); } .slide-description { font-family: var(--sans-font); font-weight: 300; font-size: 0.9rem; color: white; margin-bottom: 1.5rem; max-width: 80%; line-height: 1.6; text-shadow: 0 1px 8px rgba(0, 0, 0, 0.3); } .collection-tag { font-family: var(--sans-font); text-transform: uppercase; font-size: 0.7rem; letter-spacing: 3px; color: var(--accent-color); margin-bottom: 0.5rem; display: block; text-shadow: 0 1px 10px rgba(0, 0, 0, 0.5); } .slide-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to top, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0) 60%); } .navigation { position: absolute; bottom: 5%; right: 5%; z-index: 20; display: flex; align-items: center; } .pagination { display: flex; margin-right: 1.5rem; } .pagination-dot { width: 8px; height: 8px; border-radius: 50%; margin: 0 5px; background-color: rgba(255, 255, 255, 0.5); cursor: pointer; transition: all 0.3s ease; } .pagination-dot.active { background-color: white; transform: scale(1.3); } .nav-buttons { display: flex; } .nav-button { background: none; border: none; color: white; font-size: 1.5rem; cursor: pointer; margin: 0 5px; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background-color: rgba(255, 255, 255, 0.1); backdrop-filter: blur(5px); transition: all 0.3s ease; } .nav-button:hover { background-color: rgba(255, 255, 255, 0.2); } .gesture-indicator { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; opacity: 0; transition: opacity 0.5s ease; pointer-events: none; z-index: 30; } .gesture-icon { font-size: 2rem; color: white; margin-bottom: 0.5rem; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); } .gesture-text { font-family: var(--sans-font); font-size: 0.8rem; color: white; text-transform: uppercase; letter-spacing: 2px; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); } .season-indicator { position: absolute; top: 5%; left: 5%; z-index: 20; color: white; font-family: var(--serif-font); font-size: 1.2rem; letter-spacing: 1px; text-shadow: 0 1px 10px rgba(0, 0, 0, 0.3); opacity: 0; transform: translateY(-20px); transition: opacity 0.8s ease, transform 0.8s ease; } .slide.active + .season-indicator { opacity: 1; transform: translateY(0); } @media (max-width: 768px) { .slide-title { font-size: 1.8rem; } .slide-description { font-size: 0.8rem; max-width: 100%; } .collection-tag { font-size: 0.6rem; } .navigation { bottom: 10%; } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .fadeIn { animation: fadeIn 0.8s forwards; } .slideUp { animation: slideUp 0.8s forwards; } /* Touch swipe indicator animation */ @keyframes swipeIndicator { 0% { transform: translateX(-20px); opacity: 0; } 20% { transform: translateX(-10px); opacity: 1; } 80% { transform: translateX(10px); opacity: 1; } 100% { transform: translateX(20px); opacity: 0; } } .swipe-indicator { position: absolute; top: 50%; left: 50%; width: 50px; height: 50px; background-color: rgba(255, 255, 255, 0.2); border-radius: 50%; display: flex; align-items: center; justify-content: center; backdrop-filter: blur(5px); pointer-events: none; opacity: 0; z-index: 40; } .swipe-indicator.active { animation: swipeIndicator 1.5s ease-in-out; } .swipe-icon { color: white; font-size: 1.5rem; } </style> </head> <body> <div class="carousel-container"> <div class="slide-container"> <div class="slide active"> <img src="https://images.unsplash.com/photo-1529139574466-a303027c1d8b?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80" alt="Ethereal Minimalism" class="slide-image"> <div class="slide-overlay"></div> <div class="slide-content"> <span class="collection-tag">Autumn/Winter 2023</span> <h2 class="slide-title">Ethereal Minimalism</h2> <p class="slide-description">Precision tailoring meets fluid silhouettes in this season's meditation on structured elegance. Each piece juxtaposes architectural lines with whisper-soft materials.</p> </div> </div> <div class="slide"> <img src="https://images.unsplash.com/photo-1566206091558-7f218b696731?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80" alt="Chromatic Revival" class="slide-image"> <div class="slide-overlay"></div> <div class="slide-content"> <span class="collection-tag">Autumn/Winter 2023</span> <h2 class="slide-title">Chromatic Revival</h2> <p class="slide-description">Channeling the vibrant hues of 70s nostalgia with a contemporary lens. Saturated tones interplay with unexpected textures for a bold statement on seasonal dressing.</p> </div> </div> <div class="slide"> <img src="https://images.unsplash.com/photo-1507146153580-69a1fe6d8aa1?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80" alt="Neo Romanticism" class="slide-image"> <div class="slide-overlay"></div> <div class="slide-content"> <span class="collection-tag">Autumn/Winter 2023</span> <h2 class="slide-title">Neo Romanticism</h2> <p class="slide-description">Delicate transparency and meticulous embroidery evoke a modern interpretation of historical silhouettes. Each garment narrates its own story through careful detail and craftsmanship.</p> </div> </div> <div class="slide"> <img src="https://images.unsplash.com/photo-1509631179647-0177331693ae?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80" alt="Urban Luxe" class="slide-image"> <div class="slide-overlay"></div> <div class="slide-content"> <span class="collection-tag">Autumn/Winter 2023</span> <h2 class="slide-title">Urban Luxe</h2> <p class="slide-description">Functional elements reimagined with couture sensibilities. Technical fabrics meet handcrafted finishes in this exploration of contemporary metropolitan dressing.</p> </div> </div> <div class="slide"> <img src="https://images.unsplash.com/photo-1485125639709-a60c3a500bf1?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1500&q=80" alt="Sculptural Fluidity" class="slide-image"> <div class="slide-overlay"></div> <div class="slide-content"> <span class="collection-tag">Autumn/Winter 2023</span> <h2 class="slide-title">Sculptural Fluidity</h2> <p class="slide-description">Garments that transform with movement, creating an ongoing dialogue between fabric and form. Drapery techniques are employed to create pieces that shift perspectives with each step.</p> </div> </div> </div> <div class="season-indicator">A/W 2023 Lookbook</div> <div class="navigation"> <div class="pagination"></div> <div class="nav-buttons"> <button class="nav-button prev">❮</button> <button class="nav-button next">❯</button> </div> </div> <div class="gesture-indicator"> <div class="gesture-icon">↔</div> <div class="gesture-text">Swipe to navigate</div> </div> <div class="swipe-indicator"> <div class="swipe-icon">➞</div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const slideContainer = document.querySelector('.slide-container'); const slides = document.querySelectorAll('.slide'); const prevButton = document.querySelector('.prev'); const nextButton = document.querySelector('.next'); const pagination = document.querySelector('.pagination'); const gestureIndicator = document.querySelector('.gesture-indicator'); const swipeIndicator = document.querySelector('.swipe-indicator'); let currentIndex = 0; let startX, moveX; let isPointerDown = false; let animationInProgress = false; // Initialize pagination dots slides.forEach((_, index) => { const dot = document.createElement('div'); dot.classList.add('pagination-dot'); if (index === 0) dot.classList.add('active'); dot.addEventListener('click', () => goToSlide(index)); pagination.appendChild(dot); }); // Show gesture indicator after a delay setTimeout(() => { gestureIndicator.style.opacity = '1'; setTimeout(() => { gestureIndicator.style.opacity = '0'; }, 2000); }, 1000); // Show swipe indicator periodically setInterval(() => { if (!animationInProgress) { swipeIndicator.classList.add('active'); setTimeout(() => { swipeIndicator.classList.remove('active'); }, 1500); } }, 5000); // Event listeners for navigation prevButton.addEventListener('click', goToPrevSlide); nextButton.addEventListener('click', goToNextSlide); // Touch/mouse events for swipe slideContainer.addEventListener('mousedown', handlePointerDown); slideContainer.addEventListener('touchstart', handlePointerDown); slideContainer.addEventListener('mousemove', handlePointerMove); slideContainer.addEventListener('touchmove', handlePointerMove); slideContainer.addEventListener('mouseup', handlePointerUp); slideContainer.addEventListener('touchend', handlePointerUp); slideContainer.addEventListener('mouseleave', () => { if (isPointerDown) handlePointerUp(); }); // Functions for slide navigation function goToSlide(index) { if (animationInProgress) return; animationInProgress = true; // Update active slide slides.forEach(slide => slide.classList.remove('active')); slides[index].classList.add('active'); // Update pagination const dots = document.querySelectorAll('.pagination-dot'); dots.forEach(dot => dot.classList.remove('active')); dots[index].classList.add('active'); // Move slide container slideContainer.style.transform = `translateX(-${index * 100}%)`; // Apply parallax effect to images slides.forEach((slide, idx) => { const image = slide.querySelector('.slide-image'); if (idx === index) { image.style.transform = 'scale(1)'; } else { image.style.transform = 'scale(1.1)'; } }); currentIndex = index; setTimeout(() => { animationInProgress = false; }, 600); } function goToNextSlide() { if (currentIndex < slides.length - 1) { goToSlide(currentIndex + 1); } else { goToSlide(0); } } function goToPrevSlide() { if (currentIndex > 0) { goToSlide(currentIndex - 1); } else { goToSlide(slides.length - 1); } } // Touch/mouse event handlers function handlePointerDown(e) { isPointerDown = true; startX = e.type === 'touchstart' ? e.touches[0].clientX : e.clientX; } function handlePointerMove(e) { if (!isPointerDown) return; e.preventDefault(); moveX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; const diff = moveX - startX; // Only move if not animating if (!animationInProgress && Math.abs(diff) > 5) { const translateX = -currentIndex * 100 + (diff / window.innerWidth) * 100; slideContainer.style.transform = `translateX(${translateX}%)`; } } function handlePointerUp() { if (!isPointerDown) return; isPointerDown = false; const diff = moveX - startX; if (Math.abs(diff) > 50) { if (diff > 0) { goToPrevSlide(); } else { goToNextSlide(); } } else { // Reset position if swipe not significant slideContainer.style.transform = `translateX(-${currentIndex * 100}%)`; } } // Auto-advance slides let slideInterval = setInterval(goToNextSlide, 6000); // Reset interval on user interaction function resetInterval() { clearInterval(slideInterval); slideInterval = setInterval(goToNextSlide, 6000); } prevButton.addEventListener('click', resetInterval); nextButton.addEventListener('click', resetInterval); slideContainer.addEventListener('mousedown', resetInterval); slideContainer.addEventListener('touchstart', resetInterval); // Keyboard navigation document.addEventListener('keydown', (e) => { if (e.key === 'ArrowLeft') { goToPrevSlide(); resetInterval(); } else if (e.key === 'ArrowRight') { goToNextSlide(); resetInterval(); } }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>News Portal Headline Slider</title> <style> * { box-sizing: border-box; margin: 0; padding: 0; font-family: 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; } body { display: flex; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f5f5; overflow: hidden; padding: 20px; } .news-slider-container { width: 100%; max-width: 700px; height: 600px; background-color: #fff; border-radius: 16px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); overflow: hidden; position: relative; } .news-slider-header { display: flex; justify-content: space-between; align-items: center; padding: 20px 30px; background-color: #111; color: white; } .news-slider-header h1 { font-size: 22px; font-weight: 800; letter-spacing: -0.5px; } .live-indicator { display: flex; align-items: center; font-size: 14px; font-weight: 600; } .live-dot { height: 8px; width: 8px; border-radius: 50%; background-color: #ff3b3b; margin-right: 8px; animation: pulse 1.5s infinite; } @keyframes pulse { 0% { opacity: 1; transform: scale(1); } 50% { opacity: 0.5; transform: scale(1.2); } 100% { opacity: 1; transform: scale(1); } } .news-slider { position: relative; width: 100%; height: calc(100% - 65px); overflow: hidden; } .news-slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; flex-direction: column; opacity: 0; transform: translateX(100%); transition: transform 0.7s ease, opacity 0.7s ease; } .news-slide.active { opacity: 1; transform: translateX(0); z-index: 5; } .news-slide.previous { opacity: 0; transform: translateX(-100%); z-index: 1; } .slide-image { width: 100%; height: 60%; object-fit: cover; position: relative; } .slide-image img { width: 100%; height: 100%; object-fit: cover; } .slide-category { position: absolute; top: 20px; left: 20px; padding: 6px 12px; font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; border-radius: 4px; z-index: 10; } .politics { background-color: #ff5252; color: white; } .technology { background-color: #4a6cf7; color: white; } .environment { background-color: #2ec4b6; color: white; } .health { background-color: #e76f51; color: white; } .economy { background-color: #4c6ef5; color: white; } .slide-content { padding: 25px; height: 40%; display: flex; flex-direction: column; justify-content: space-between; position: relative; } .slide-headline { font-size: 24px; line-height: 1.2; font-weight: 800; margin-bottom: 12px; color: #111; } .slide-description { font-size: 16px; color: #555; line-height: 1.4; margin-bottom: 20px; } .slide-meta { display: flex; justify-content: space-between; align-items: center; font-size: 14px; color: #777; } .slide-time { display: flex; align-items: center; } .slide-time svg { margin-right: 6px; } .read-more { display: inline-flex; align-items: center; justify-content: center; padding: 10px 20px; background-color: #111; color: white; border-radius: 4px; font-weight: 600; text-decoration: none; font-size: 14px; transition: all 0.2s ease; border: none; cursor: pointer; } .read-more:hover { background-color: #333; transform: translateY(-2px); } .read-more svg { margin-left: 8px; transition: transform 0.2s ease; } .read-more:hover svg { transform: translateX(3px); } .slider-controls { position: absolute; bottom: 0; left: 0; width: 100%; display: flex; justify-content: space-between; padding: 0 25px 25px; z-index: 10; } .control-buttons { display: flex; gap: 10px; } .slider-button { background-color: rgba(0, 0, 0, 0.8); border: none; color: white; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.2s ease; } .slider-button:hover { background-color: #000; transform: scale(1.05); } .progress-container { position: absolute; bottom: 0; left: 0; width: 100%; height: 5px; background-color: rgba(0, 0, 0, 0.1); overflow: hidden; } .progress-bar { height: 100%; width: 0; background: linear-gradient(to right, #3a86ff, #ff006e); transition: width 0.1s linear; } .slider-indicators { display: flex; gap: 8px; } .indicator { width: 8px; height: 8px; border-radius: 50%; background-color: rgba(0, 0, 0, 0.2); cursor: pointer; transition: all 0.3s ease; } .indicator.active { background-color: #111; transform: scale(1.2); } @media (max-width: 768px) { .news-slider-container { height: 550px; } .slide-headline { font-size: 20px; } .slide-description { font-size: 14px; } } @media (max-width: 576px) { .news-slider-container { height: 500px; } .news-slider-header h1 { font-size: 18px; } .slide-headline { font-size: 18px; } .slide-description { font-size: 13px; margin-bottom: 15px; } .slide-content { padding: 15px; } } </style> </head> <body> <div class="news-slider-container"> <div class="news-slider-header"> <h1>BREAKING HEADLINES</h1> <div class="live-indicator"> <div class="live-dot"></div> <span>LIVE</span> </div> </div> <div class="news-slider"> <div class="progress-container"> <div class="progress-bar" id="progress"></div> </div> <div class="news-slide active"> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1541872703-74c5e44368f9?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1856&q=80" alt="Global Climate Summit"> <div class="slide-category environment">Environment</div> </div> <div class="slide-content"> <div> <h2 class="slide-headline">Historic Climate Agreement Reached as 195 Nations Pledge Carbon Neutrality by 2050</h2> <p class="slide-description">World leaders finalize ambitious agreement to limit global temperature rise to 1.5ยฐC through unprecedented collaboration and binding commitments.</p> </div> <div class="slide-meta"> <div class="slide-time"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="#777" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> <span>23 minutes ago</span> </div> <button class="read-more"> Read Full Story <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5 12H19M19 12L12 5M19 12L12 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </div> </div> </div> <div class="news-slide"> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1583266773970-822414087e4e?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Tech Innovation"> <div class="slide-category technology">Technology</div> </div> <div class="slide-content"> <div> <h2 class="slide-headline">Revolutionary Quantum Computing Breakthrough Makes Encryption Obsolete</h2> <p class="slide-description">Silicon Valley startup demonstrates functional quantum processor capable of solving problems current supercomputers would take centuries to calculate.</p> </div> <div class="slide-meta"> <div class="slide-time"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="#777" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> <span>1 hour ago</span> </div> <button class="read-more"> Read Full Story <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5 12H19M19 12L12 5M19 12L12 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </div> </div> </div> <div class="news-slide"> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1529107386315-e1a2ed48a620?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Political Summit"> <div class="slide-category politics">Politics</div> </div> <div class="slide-content"> <div> <h2 class="slide-headline">UN Security Council Unanimously Approves Historic Peacekeeping Reform</h2> <p class="slide-description">Landmark resolution introduces rapid response mechanisms and expanded authority for peacekeepers in conflict zones worldwide.</p> </div> <div class="slide-meta"> <div class="slide-time"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="#777" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> <span>2 hours ago</span> </div> <button class="read-more"> Read Full Story <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5 12H19M19 12L12 5M19 12L12 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </div> </div> </div> <div class="news-slide"> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1576091160550-2173dba999ef?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Medical Research"> <div class="slide-category health">Health</div> </div> <div class="slide-content"> <div> <h2 class="slide-headline">Researchers Successfully Test Universal Cancer Vaccine in Landmark Clinical Trial</h2> <p class="slide-description">Breakthrough mRNA-based immunotherapy shows 87% efficacy against multiple cancer types with minimal side effects in phase III trials.</p> </div> <div class="slide-meta"> <div class="slide-time"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="#777" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> <span>3 hours ago</span> </div> <button class="read-more"> Read Full Story <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5 12H19M19 12L12 5M19 12L12 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </div> </div> </div> <div class="news-slide"> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1638913970895-d3df59be1466?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Financial Markets"> <div class="slide-category economy">Economy</div> </div> <div class="slide-content"> <div> <h2 class="slide-headline">Global Markets Surge as Central Banks Coordinate Historic Interest Rate Cuts</h2> <p class="slide-description">Unprecedented synchronized policy shift by seven major central banks aims to stimulate post-pandemic recovery and ease inflation concerns.</p> </div> <div class="slide-meta"> <div class="slide-time"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="#777" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> <span>5 hours ago</span> </div> <button class="read-more"> Read Full Story <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5 12H19M19 12L12 5M19 12L12 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </div> </div> </div> <div class="slider-controls"> <div class="slider-indicators" id="indicators"> <div class="indicator active" data-index="0"></div> <div class="indicator" data-index="1"></div> <div class="indicator" data-index="2"></div> <div class="indicator" data-index="3"></div> <div class="indicator" data-index="4"></div> </div> <div class="control-buttons"> <button class="slider-button" id="pauseBtn"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" id="pauseIcon"> <path d="M10 4H6V20H10V4Z" fill="white"/> <path d="M18 4H14V20H18V4Z" fill="white"/> </svg> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" id="playIcon" style="display: none;"> <path d="M6 4L18 12L6 20V4Z" fill="white"/> </svg> </button> <button class="slider-button" id="prevBtn"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M19 12H5M5 12L12 19M5 12L12 5" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> <button class="slider-button" id="nextBtn"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M5 12H19M19 12L12 5M19 12L12 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const slides = document.querySelectorAll('.news-slide'); const indicators = document.querySelectorAll('.indicator'); const prevBtn = document.getElementById('prevBtn'); const nextBtn = document.getElementById('nextBtn'); const pauseBtn = document.getElementById('pauseBtn'); const pauseIcon = document.getElementById('pauseIcon'); const playIcon = document.getElementById('playIcon'); const progressBar = document.getElementById('progress'); const slidesCount = slides.length; let currentSlide = 0; let interval; let isPaused = false; let progressWidth = 0; const slideInterval = 5000; const progressSpeed = 20; // Lower value = smoother progress // Start slideshow automatically startSlideshow(); // Initialize indicators indicators.forEach((indicator, index) => { indicator.addEventListener('click', () => { goToSlide(index); resetProgress(); }); }); // Previous button prevBtn.addEventListener('click', () => { currentSlide = (currentSlide - 1 + slidesCount) % slidesCount; updateSlides(); resetProgress(); }); // Next button nextBtn.addEventListener('click', () => { currentSlide = (currentSlide + 1) % slidesCount; updateSlides(); resetProgress(); }); // Pause/play button pauseBtn.addEventListener('click', togglePause); // Pause on hover document.querySelector('.news-slider').addEventListener('mouseenter', () => { if (!isPaused) { clearInterval(interval); stopProgress(); } }); // Resume on mouse leave document.querySelector('.news-slider').addEventListener('mouseleave', () => { if (!isPaused) { startSlideshow(); } }); // Functions function startSlideshow() { // Clear any existing intervals clearInterval(interval); // Start progress bar animation startProgress(); // Set the interval for slide transition interval = setInterval(() => { currentSlide = (currentSlide + 1) % slidesCount; updateSlides(); resetProgress(); }, slideInterval); } function updateSlides() { slides.forEach((slide, index) => { slide.classList.remove('active', 'previous'); if (index === currentSlide) { slide.classList.add('active'); } else if (index === (currentSlide - 1 + slidesCount) % slidesCount) { slide.classList.add('previous'); } }); indicators.forEach((indicator, index) => { indicator.classList.toggle('active', index === currentSlide); }); } function goToSlide(index) { currentSlide = index; updateSlides(); } function togglePause() { isPaused = !isPaused; if (isPaused) { clearInterval(interval); stopProgress(); pauseIcon.style.display = 'none'; playIcon.style.display = 'block'; } else { startSlideshow(); pauseIcon.style.display = 'block'; playIcon.style.display = 'none'; } } let progressInterval; function startProgress() { // Reset progress width progressWidth = 0; progressBar.style.width = '0%'; // Clear any existing intervals clearInterval(progressInterval); // Start progress animation progressInterval = setInterval(() => { progressWidth += (100 * progressSpeed) / slideInterval; if (progressWidth >= 100) { progressWidth = 100; } progressBar.style.width = progressWidth + '%'; }, progressSpeed); } function stopProgress() { clearInterval(progressInterval); } function resetProgress() { progressWidth = 0; progressBar.style.width = '0%'; if (!isPaused) { startProgress(); } } // Add ripple effect to buttons const buttons = document.querySelectorAll('.read-more, .slider-button'); buttons.forEach(button => { button.addEventListener('click', function(e) { const ripple = document.createElement('span'); const rect = button.getBoundingClientRect(); const size = Math.max(rect.width, rect.height); const x = e.clientX - rect.left - size / 2; const y = e.clientY - rect.top - size / 2; ripple.style.width = ripple.style.height = `${size}px`; ripple.style.left = `${x}px`; ripple.style.top = `${y}px`; ripple.classList.add('ripple'); button.appendChild(ripple); setTimeout(() => { ripple.remove(); }, 600); }); }); }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Education & Learning Hub</title> <style> :root { --primary-color: #6c63ff; --secondary-color: #f8f9fa; --accent-color: #ffcc5c; --text-dark: #333333; --text-light: #6b7280; --white: #ffffff; --shadow: rgba(0, 0, 0, 0.1); --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); --radius: 10px; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } body { background-color: var(--secondary-color); color: var(--text-dark); display: flex; justify-content: center; align-items: center; min-height: 100vh; overflow: hidden; padding: 20px; } .slideshow-container { background-color: var(--white); border-radius: var(--radius); box-shadow: 0 10px 30px var(--shadow); width: 100%; max-width: 700px; height: 650px; position: relative; overflow: hidden; display: flex; flex-direction: column; } .header { padding: 20px 30px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid rgba(0, 0, 0, 0.08); background: linear-gradient(135deg, var(--primary-color) 0%, #8a84ff 100%); color: var(--white); border-radius: var(--radius) var(--radius) 0 0; } .logo { display: flex; align-items: center; gap: 10px; } .logo-icon { width: 32px; height: 32px; background-color: var(--white); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--primary-color); font-weight: bold; } .slides-wrapper { flex: 1; position: relative; overflow: hidden; } .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: var(--transition); transform: translateX(50px); display: flex; flex-direction: column; padding: 30px; visibility: hidden; } .slide.active { opacity: 1; transform: translateX(0); visibility: visible; } .slide-content { flex: 1; display: flex; flex-direction: column; } .slide-number { font-size: 14px; color: var(--primary-color); margin-bottom: 10px; font-weight: 600; opacity: 0; transform: translateY(20px); transition: var(--transition); transition-delay: 0.1s; } .slide.active .slide-number { opacity: 1; transform: translateY(0); } .slide-title { font-size: 28px; font-weight: 700; margin-bottom: 20px; color: var(--text-dark); opacity: 0; transform: translateY(20px); transition: var(--transition); transition-delay: 0.2s; } .slide.active .slide-title { opacity: 1; transform: translateY(0); } .slide-description { font-size: 16px; line-height: 1.6; color: var(--text-light); margin-bottom: 25px; opacity: 0; transform: translateY(20px); transition: var(--transition); transition-delay: 0.3s; } .slide.active .slide-description { opacity: 1; transform: translateY(0); } .slide-visual { margin: 20px 0; height: 180px; background-color: rgba(108, 99, 255, 0.08); border-radius: var(--radius); display: flex; justify-content: center; align-items: center; overflow: hidden; opacity: 0; transform: scale(0.9); transition: var(--transition); transition-delay: 0.4s; position: relative; } .slide.active .slide-visual { opacity: 1; transform: scale(1); } .slide-key-points { display: flex; flex-wrap: wrap; gap: 15px; margin-bottom: 20px; } .key-point { background-color: rgba(108, 99, 255, 0.08); border-radius: var(--radius); padding: 12px 15px; display: flex; align-items: center; gap: 10px; flex: 1; min-width: 180px; opacity: 0; transform: translateY(20px); transition: var(--transition); } .key-point-icon { width: 32px; height: 32px; background-color: var(--primary-color); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--white); } .key-point-text { font-size: 14px; color: var(--text-dark); font-weight: 500; } .slide.active .key-point:nth-child(1) { transition-delay: 0.5s; opacity: 1; transform: translateY(0); } .slide.active .key-point:nth-child(2) { transition-delay: 0.6s; opacity: 1; transform: translateY(0); } .navigation { display: flex; justify-content: space-between; align-items: center; padding: 20px 30px; border-top: 1px solid rgba(0, 0, 0, 0.08); background-color: var(--white); } .progress-container { flex: 1; margin: 0 20px; height: 4px; background-color: rgba(108, 99, 255, 0.2); border-radius: 4px; overflow: hidden; } .progress-bar { height: 100%; background-color: var(--primary-color); width: 0; transition: width 0.4s ease; } .nav-button { background-color: transparent; border: none; cursor: pointer; display: flex; align-items: center; gap: 5px; color: var(--primary-color); font-weight: 600; font-size: 14px; transition: var(--transition); padding: 8px 15px; border-radius: 20px; } .nav-button:hover { background-color: rgba(108, 99, 255, 0.1); } .nav-button:disabled { opacity: 0.5; cursor: not-allowed; } .nav-button-icon { width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; } .dots-container { display: flex; justify-content: center; gap: 8px; margin-top: 15px; } .dot { width: 8px; height: 8px; border-radius: 50%; background-color: rgba(108, 99, 255, 0.2); cursor: pointer; transition: var(--transition); } .dot.active { background-color: var(--primary-color); transform: scale(1.3); } /* Visual elements for slides */ .visual-element { position: absolute; transition: var(--transition); } /* For slide 1 */ .learning-paths { position: relative; width: 100%; height: 100%; } .path-node { width: 50px; height: 50px; border-radius: 50%; background-color: var(--primary-color); position: absolute; display: flex; align-items: center; justify-content: center; color: white; font-weight: bold; box-shadow: 0 4px 10px rgba(108, 99, 255, 0.3); opacity: 0; transition: var(--transition); } .path-line { height: 3px; background-color: var(--primary-color); position: absolute; transform-origin: left center; opacity: 0.5; transition: var(--transition); transition-delay: 0.3s; width: 0; } .slide.active .path-node { opacity: 1; } .slide.active .path-line { width: 100%; } /* For slide 2 */ .interactive-element { width: 80%; height: 80%; position: relative; } .content-block { position: absolute; width: 90px; height: 90px; border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); transition: var(--transition); background-color: white; transform: scale(0); cursor: pointer; } .content-block-icon { font-size: 24px; margin-bottom: 5px; color: var(--primary-color); } .content-block-text { font-size: 12px; color: var(--text-dark); font-weight: 500; } .slide.active .content-block { transform: scale(1); } /* For slide 3 */ .analytics-chart { width: 90%; height: 90%; position: relative; } .chart-bar { position: absolute; bottom: 0; width: 40px; background: linear-gradient(to top, var(--primary-color), #8a84ff); border-radius: 5px 5px 0 0; transition: height 1s cubic-bezier(0.2, 0.8, 0.2, 1); height: 0; } .chart-label { position: absolute; bottom: -25px; text-align: center; color: var(--text-dark); font-size: 12px; width: 100%; } .slide.active .chart-bar { height: var(--height); } /* For slide 4 */ .community-visual { position: relative; width: 100%; height: 100%; } .avatar { position: absolute; width: 50px; height: 50px; border-radius: 50%; background-color: var(--white); border: 3px solid var(--primary-color); display: flex; align-items: center; justify-content: center; color: var(--primary-color); font-weight: bold; font-size: 16px; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); opacity: 0; transform: scale(0); transition: var(--transition); } .connection { position: absolute; height: 2px; background-color: var(--primary-color); transform-origin: left center; opacity: 0; width: 0; transition: all 0.6s ease; } .slide.active .avatar { opacity: 1; transform: scale(1); } .slide.active .connection { opacity: 0.5; width: 100%; } /* For slide 5 */ .resources-grid { display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr); gap: 15px; width: 100%; height: 100%; } .resource-item { background-color: white; border-radius: var(--radius); padding: 15px; display: flex; flex-direction: column; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05); transition: var(--transition); transform: translateY(20px); opacity: 0; cursor: pointer; } .resource-item:hover { transform: translateY(-5px) !important; box-shadow: 0 10px 20px rgba(108, 99, 255, 0.1); } .resource-icon { width: 36px; height: 36px; background-color: rgba(108, 99, 255, 0.1); border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--primary-color); margin-bottom: 10px; } .resource-title { font-size: 14px; font-weight: 600; color: var(--text-dark); margin-bottom: 5px; } .resource-desc { font-size: 12px; color: var(--text-light); line-height: 1.4; } .slide.active .resource-item:nth-child(1) { transition-delay: 0.2s; opacity: 1; transform: translateY(0); } .slide.active .resource-item:nth-child(2) { transition-delay: 0.3s; opacity: 1; transform: translateY(0); } .slide.active .resource-item:nth-child(3) { transition-delay: 0.4s; opacity: 1; transform: translateY(0); } .slide.active .resource-item:nth-child(4) { transition-delay: 0.5s; opacity: 1; transform: translateY(0); } /* Responsive adjustments */ @media (max-width: 600px) { .slide-title { font-size: 24px; margin-bottom: 15px; } .slide-key-points { flex-direction: column; } .key-point { min-width: 100%; } .slide { padding: 20px; } .slide-visual { height: 150px; } } /* Floating particles */ .particles { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: -1; } .particle { position: absolute; border-radius: 50%; background-color: var(--primary-color); opacity: 0.1; animation: float 15s infinite ease-in-out; } @keyframes float { 0%, 100% { transform: translateY(0) translateX(0); } 25% { transform: translateY(-30px) translateX(10px); } 50% { transform: translateY(-15px) translateX(15px); } 75% { transform: translateY(-20px) translateX(-10px); } } </style> </head> <body> <div class="slideshow-container"> <div class="header"> <div class="logo"> <div class="logo-icon">E</div> <h1>EduHub</h1> </div> </div> <div class="slides-wrapper"> <!-- Slide 1 --> <div class="slide active" id="slide1"> <div class="slide-content"> <div class="slide-number">01 / 05</div> <h2 class="slide-title">Personalized Learning Paths</h2> <p class="slide-description">Our adaptive system creates customized learning journeys based on your goals, strengths, and learning style. Each path is structured to maximize engagement and knowledge retention.</p> <div class="slide-visual"> <div class="learning-paths"> <div class="path-node" style="top: 20%; left: 15%;">1</div> <div class="path-line" style="top: 25%; left: 18%; width: 100px; transform: rotate(20deg);"></div> <div class="path-node" style="top: 30%; left: 45%;">2</div> <div class="path-line" style="top: 35%; left: 48%; width: 100px; transform: rotate(-20deg);"></div> <div class="path-node" style="top: 20%; left: 75%;">3</div> <div class="path-line" style="top: 25%; left: 78%; width: 80px; transform: rotate(110deg);"></div> <div class="path-node" style="top: 60%; left: 75%;">4</div> <div class="path-line" style="top: 65%; left: 72%; width: 120px; transform: rotate(-160deg);"></div> <div class="path-node" style="top: 70%; left: 40%;">5</div> <div class="path-line" style="top: 75%; left: 38%; width: 100px; transform: rotate(-30deg);"></div> <div class="path-node" style="top: 60%; left: 15%;">6</div> </div> </div> <div class="slide-key-points"> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z" stroke="white" stroke-width="2"/> <path d="M15 9L9.5 14.5L8 13" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="key-point-text">Skill-based milestones</div> </div> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M21 10H3M21 14H3M7 18V22M17 18V22M7 2V6M17 2V6M5 10H19C20.1046 10 21 9.10457 21 8V6C21 4.89543 20.1046 4 19 4H5C3.89543 4 3 4.89543 3 6V8C3 9.10457 3.89543 10 5 10Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="key-point-text">Adaptive pacing</div> </div> </div> </div> </div> <!-- Slide 2 --> <div class="slide" id="slide2"> <div class="slide-content"> <div class="slide-number">02 / 05</div> <h2 class="slide-title">Interactive Learning Modules</h2> <p class="slide-description">Engage with dynamic content that responds to your interactions. Our modules combine videos, quizzes, simulations, and coding challenges to reinforce concepts through active participation.</p> <div class="slide-visual"> <div class="interactive-element"> <div class="content-block" style="top: 15%; left: 15%; transition-delay: 0.2s;"> <div class="content-block-icon">๐ฌ</div> <div class="content-block-text">Videos</div> </div> <div class="content-block" style="top: 15%; right: 15%; transition-delay: 0.3s;"> <div class="content-block-icon">๐</div> <div class="content-block-text">Quizzes</div> </div> <div class="content-block" style="bottom: 15%; left: 15%; transition-delay: 0.4s;"> <div class="content-block-icon">๐ป</div> <div class="content-block-text">Coding</div> </div> <div class="content-block" style="bottom: 15%; right: 15%; transition-delay: 0.5s;"> <div class="content-block-icon">๐</div> <div class="content-block-text">Simulations</div> </div> </div> </div> <div class="slide-key-points"> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M20 11C20 15.4183 16.4183 19 12 19C7.58172 19 4 15.4183 4 11C4 6.58172 7.58172 3 12 3C16.4183 3 20 6.58172 20 11Z" stroke="white" stroke-width="2"/> <path d="M12 8V12L15 13.5" stroke="white" stroke-width="2" stroke-linecap="round"/> </svg> </div> <div class="key-point-text">Real-time feedback</div> </div> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9 16L15 10M12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="key-point-text">Hands-on practice</div> </div> </div> </div> </div> <!-- Slide 3 --> <div class="slide" id="slide3"> <div class="slide-content"> <div class="slide-number">03 / 05</div> <h2 class="slide-title">Progress Tracking Analytics</h2> <p class="slide-description">Visualize your learning journey with comprehensive analytics. Identify strengths, address knowledge gaps, and celebrate milestones with detailed insights into your performance and engagement metrics.</p> <div class="slide-visual"> <div class="analytics-chart"> <div class="chart-bar" style="left: 10%; --height: 60%;"> <div class="chart-label">Week 1</div> </div> <div class="chart-bar" style="left: 30%; --height: 40%;"> <div class="chart-label">Week 2</div> </div> <div class="chart-bar" style="left: 50%; --height: 75%;"> <div class="chart-label">Week 3</div> </div> <div class="chart-bar" style="left: 70%; --height: 65%;"> <div class="chart-label">Week 4</div> </div> </div> </div> <div class="slide-key-points"> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M10 20H6C4.89543 20 4 19.1046 4 18V6C4 4.89543 4.89543 4 6 4H18C19.1046 4 20 4.89543 20 6V12M12 10L4 18M14 19L17 22L22 17" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="key-point-text">Performance insights</div> </div> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M2 9L12 3L22 9M2 9V19M2 9L12 15M22 9V19M22 9L12 15M12 15V21" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="key-point-text">Skill gap analysis</div> </div> </div> </div> </div> <!-- Slide 4 --> <div class="slide" id="slide4"> <div class="slide-content"> <div class="slide-number">04 / 05</div> <h2 class="slide-title">Learning Community Engagement</h2> <p class="slide-description">Connect with peers, instructors, and industry experts in our collaborative learning environment. Participate in discussion forums, group projects, and virtual study sessions to enhance your understanding.</p> <div class="slide-visual"> <div class="community-visual"> <div class="avatar" style="top: 20%; left: 50%; transition-delay: 0.2s;">๐ฉโ๐</div> <div class="connection" style="top: 25%; left: 50%; width: 80px; transform: rotate(135deg); transition-delay: 0.3s;"></div> <div class="avatar" style="top: 40%; left: 25%; transition-delay: 0.4s;">๐จโ๐ซ</div> <div class="connection" style="top: 45%; left: 25%; width: 80px; transform: rotate(45deg); transition-delay: 0.5s;"></div> <div class="avatar" style="top: 60%; left: 50%; transition-delay: 0.6s;">๐จโ๐ป</div> <div class="connection" style="top: 30%; left: 55%; width: 100px; transform: rotate(45deg); transition-delay: 0.7s;"></div> <div class="avatar" style="top: 50%; left: 75%; transition-delay: 0.8s;">๐ฉโ๐ผ</div> <div class="connection" style="top: 55%; left: 70%; width: 80px; transform: rotate(135deg); transition-delay: 0.9s;"></div> </div> </div> <div class="slide-key-points"> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M17 20L12 15M17 20H7M17 20V10M7 20L12 15M7 20V10M12 15V4" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="key-point-text">Peer collaboration</div> </div> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 14V8M12 8L15 11M12 8L9 11M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="key-point-text">Expert feedback</div> </div> </div> </div> </div> <!-- Slide 5 --> <div class="slide" id="slide5"> <div class="slide-content"> <div class="slide-number">05 / 05</div> <h2 class="slide-title">Supplementary Learning Resources</h2> <p class="slide-description">Access a curated library of additional materials to deepen your understanding. From downloadable notes to recommended readings and interactive tools, we provide everything you need to excel in your studies.</p> <div class="slide-visual"> <div class="resources-grid"> <div class="resource-item"> <div class="resource-icon">๐</div> <div class="resource-title">Digital Library</div> <div class="resource-desc">Access over 10,000 textbooks, papers, and reference materials</div> </div> <div class="resource-item"> <div class="resource-icon">๐ง</div> <div class="resource-title">Audio Lectures</div> <div class="resource-desc">Learn on-the-go with downloadable audio content</div> </div> <div class="resource-item"> <div class="resource-icon">๐งฉ</div> <div class="resource-title">Practice Exercises</div> <div class="resource-desc">Reinforce concepts with interactive problem sets</div> </div> <div class="resource-item"> <div class="resource-icon">๐</div> <div class="resource-title">Industry Tools</div> <div class="resource-desc">Gain hands-on experience with professional software</div> </div> </div> </div> <div class="slide-key-points"> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 10V16M12 16L9 13M12 16L15 13M12 3V4M3 12H4M5.636 5.636L6.343 6.343M18.364 5.636L17.657 6.343M21 12H20M4.22183 19.7782C5.42029 20.9767 7.04598 21.6667 9 21.6667C13.4183 21.6667 17 18.0849 17 13.6667C17 9.24842 13.4183 5.66667 9 5.66667C4.58172 5.66667 1 9.24842 1 13.6667C1 15.6207 1.69 17.2464 2.88837 18.4448L4.22183 19.7782Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="key-point-text">Downloadable content</div> </div> <div class="key-point"> <div class="key-point-icon"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M14 11H8V13H14V11Z" fill="white"/> <path d="M6 19H18V9H6V19ZM8 11H14V13H8V11Z" stroke="white" stroke-width="2" stroke-linejoin="round"/> <path d="M15 7V5H17V7H15Z" fill="white"/> <path d="M10 4H4V16M8 4V8M18 17V21M14 21H22" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> <div class="key-point-text">Multiple formats</div> </div> </div> </div> </div> </div> <div class="navigation"> <button class="nav-button prev-button" disabled> <div class="nav-button-icon"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M15 18L9 12L15 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> Previous </button> <div class="progress-container"> <div class="progress-bar"></div> </div> <button class="nav-button next-button"> Next <div class="nav-button-icon"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M9 6L15 12L9 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg> </div> </button> </div> <div class="dots-container"> <div class="dot active" data-slide="1"></div> <div class="dot" data-slide="2"></div> <div class="dot" data-slide="3"></div> <div class="dot" data-slide="4"></div> <div class="dot" data-slide="5"></div> </div> <!-- Floating particles for background effect --> <div class="particles"> <div class="particle" style="width: 12px; height: 12px; top: 10%; left: 20%; animation-delay: 0s;"></div> <div class="particle" style
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>TechSummit 2024 - Innovation Beyond Boundaries</title> <style> @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;600;800&family=Outfit:wght@400;700;900&display=swap'); :root { --primary: #ff3366; --secondary: #5933ff; --dark: #0a0626; --light: #ffffff; --accent: #33ffc0; --transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1); } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Montserrat', sans-serif; background-color: var(--dark); color: var(--light); overflow: hidden; width: 100%; height: 100vh; position: relative; } .slideshow-container { width: 100%; height: 700px; position: relative; overflow: hidden; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4); } .slide { position: absolute; width: 100%; height: 100%; opacity: 0; transform: scale(1.1); transition: var(--transition); display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 2rem; background-size: cover; background-position: center; overflow: hidden; } .slide::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(10, 6, 38, 0.65); z-index: 1; } .slide-content { position: relative; z-index: 2; max-width: 80%; transform: translateY(30px); opacity: 0; transition: all 0.8s ease 0.3s; } .slide.active { opacity: 1; transform: scale(1); } .slide.active .slide-content { transform: translateY(0); opacity: 1; } h1 { font-family: 'Outfit', sans-serif; font-weight: 900; font-size: 3.5rem; margin-bottom: 1rem; line-height: 1.1; background: linear-gradient(135deg, var(--primary), var(--secondary)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); } h2 { font-family: 'Outfit', sans-serif; font-size: 1.8rem; margin-bottom: 1.5rem; color: var(--accent); } p { font-size: 1.1rem; line-height: 1.6; margin-bottom: 2rem; max-width: 600px; } .cta-btn { display: inline-block; padding: 0.8rem 2rem; background: linear-gradient(135deg, var(--primary), var(--secondary)); color: var(--light); text-decoration: none; border-radius: 50px; font-weight: 600; font-size: 1.1rem; text-transform: uppercase; letter-spacing: 1px; position: relative; overflow: hidden; z-index: 1; transition: var(--transition); box-shadow: 0 4px 15px rgba(255, 51, 102, 0.4); margin: 0.5rem; } .cta-btn:hover { transform: translateY(-3px); box-shadow: 0 10px 20px rgba(255, 51, 102, 0.4); } .cta-btn::after { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, var(--secondary), var(--primary)); z-index: -1; opacity: 0; transition: var(--transition); } .cta-btn:hover::after { opacity: 1; } .timer-container { display: flex; justify-content: center; margin: 2rem 0; gap: 1rem; } .timer-item { display: flex; flex-direction: column; align-items: center; background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); padding: 0.8rem 1rem; border-radius: 10px; min-width: 80px; border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); } .timer-value { font-size: 2rem; font-weight: 700; color: var(--accent); } .timer-label { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 1px; color: rgba(255, 255, 255, 0.8); } .navigation { position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%); display: flex; gap: 0.5rem; z-index: 100; } .nav-dot { width: 12px; height: 12px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.3); cursor: pointer; transition: var(--transition); } .nav-dot.active { background-color: var(--primary); transform: scale(1.3); } .nav-arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 100; background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); width: 50px; height: 50px; border-radius: 50%; display: flex; justify-content: center; align-items: center; cursor: pointer; border: none; outline: none; color: var(--light); transition: var(--transition); } .nav-arrow:hover { background: rgba(255, 255, 255, 0.2); } .nav-arrow-prev { left: 1rem; } .nav-arrow-next { right: 1rem; } .arrow-icon { width: 15px; height: 15px; border-top: 2px solid var(--light); border-right: 2px solid var(--light); display: block; } .arrow-prev { transform: rotate(-135deg); } .arrow-next { transform: rotate(45deg); } .speaker { display: flex; align-items: center; margin-bottom: 1.5rem; background: rgba(255, 255, 255, 0.1); border-radius: 10px; padding: 1rem; max-width: 500px; margin: 0 auto 1.5rem; transition: var(--transition); border: 1px solid rgba(255, 255, 255, 0.05); } .speaker:hover { transform: translateY(-5px); background: rgba(255, 255, 255, 0.15); } .speaker-img { width: 70px; height: 70px; border-radius: 50%; object-fit: cover; border: 3px solid var(--primary); margin-right: 1rem; transition: var(--transition); } .speaker:hover .speaker-img { transform: scale(1.1); } .speaker-details { text-align: left; } .speaker-name { font-weight: 700; color: var(--accent); font-size: 1.1rem; margin-bottom: 0.2rem; } .speaker-title { font-size: 0.9rem; opacity: 0.8; } .agenda-item { display: flex; background: rgba(255, 255, 255, 0.1); border-radius: 10px; padding: 1rem; margin-bottom: 1rem; border-left: 4px solid var(--primary); text-align: left; max-width: 500px; margin-left: auto; margin-right: auto; } .agenda-time { background: var(--primary); color: var(--light); padding: 0.5rem; border-radius: 5px; font-weight: 600; margin-right: 1rem; min-width: 80px; text-align: center; align-self: flex-start; } .agenda-content h4 { margin-bottom: 0.3rem; color: var(--accent); } .location-pin { display: inline-flex; align-items: center; margin-top: 1rem; background: rgba(255, 255, 255, 0.1); padding: 0.5rem 1rem; border-radius: 50px; } .location-pin svg { margin-right: 0.5rem; } .sponsor-grid { display: flex; justify-content: center; gap: 1.5rem; flex-wrap: wrap; margin: 2rem 0; } .sponsor-logo { background: rgba(255, 255, 255, 0.1); padding: 1rem; border-radius: 10px; height: 60px; width: 120px; display: flex; align-items: center; justify-content: center; transition: var(--transition); } .sponsor-logo:hover { background: rgba(255, 255, 255, 0.2); transform: translateY(-5px); } .logo { width: 80%; height: auto; filter: brightness(0) invert(1); opacity: 0.7; transition: var(--transition); } .sponsor-logo:hover .logo { opacity: 1; } .highlight { color: var(--primary); font-weight: 600; } .feature-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; margin: 1.5rem 0; } .feature { background: rgba(255, 255, 255, 0.1); border-radius: 10px; padding: 1rem; display: flex; align-items: center; transition: var(--transition); } .feature:hover { background: rgba(255, 255, 255, 0.15); transform: translateY(-3px); } .feature-icon { width: 40px; height: 40px; margin-right: 1rem; background: var(--primary); border-radius: 50%; display: flex; align-items: center; justify-content: center; } .feature-text { font-size: 0.9rem; text-align: left; } .pulse { animation: pulse 2s infinite; } @keyframes pulse { 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(255, 51, 102, 0.7); } 70% { transform: scale(1.05); box-shadow: 0 0 0 10px rgba(255, 51, 102, 0); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(255, 51, 102, 0); } } @media (max-width: 768px) { h1 { font-size: 2.5rem; } h2 { font-size: 1.5rem; } p { font-size: 1rem; } .timer-container { gap: 0.5rem; } .timer-item { min-width: 60px; padding: 0.5rem; } .timer-value { font-size: 1.5rem; } .feature-grid { grid-template-columns: 1fr; } .agenda-item { flex-direction: column; } .agenda-time { margin-bottom: 0.5rem; margin-right: 0; } } @media (max-width: 480px) { .slide-content { max-width: 95%; } h1 { font-size: 2rem; } .nav-arrow { width: 40px; height: 40px; } } /* Animated background pattern */ .bg-pattern { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.15; background: radial-gradient(circle at 20% 30%, var(--primary) 0%, transparent 8%), radial-gradient(circle at 75% 60%, var(--secondary) 0%, transparent 8%), radial-gradient(circle at 40% 80%, var(--accent) 0%, transparent 8%); background-size: 180% 180%; animation: patternMove 15s ease infinite; pointer-events: none; z-index: 0; } @keyframes patternMove { 0% { background-position: 0% 0%; } 50% { background-position: 100% 100%; } 100% { background-position: 0% 0%; } } </style> </head> <body> <div class="slideshow-container"> <div class="bg-pattern"></div> <div class="slide" style="background-image: url('https://images.unsplash.com/photo-1540575467063-178a50c2df87?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80')"> <div class="slide-content"> <h1>TechSummit 2024</h1> <h2>Innovation Beyond Boundaries</h2> <p>Join the most anticipated tech event of the year, featuring revolutionary breakthroughs, industry leaders, and networking opportunities that will reshape your digital future.</p> <div class="timer-container"> <div class="timer-item"> <div id="days" class="timer-value">35</div> <div class="timer-label">Days</div> </div> <div class="timer-item"> <div id="hours" class="timer-value">08</div> <div class="timer-label">Hours</div> </div> <div class="timer-item"> <div id="minutes" class="timer-value">42</div> <div class="timer-label">Minutes</div> </div> <div class="timer-item"> <div id="seconds" class="timer-value">17</div> <div class="timer-label">Seconds</div> </div> </div> <a href="#register" class="cta-btn pulse">Reserve Your Spot</a> </div> </div> <div class="slide" style="background-image: url('https://images.unsplash.com/photo-1505373877841-8d25f7d46678?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1112&q=80')"> <div class="slide-content"> <h1>World-Class Speakers</h1> <h2>Learn from the Best</h2> <div class="speaker"> <img src="https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=387&q=80" alt="Dr. Elena Vega" class="speaker-img"> <div class="speaker-details"> <div class="speaker-name">Dr. Elena Vega</div> <div class="speaker-title">CTO, Quantum Technologies Inc.</div> </div> </div> <div class="speaker"> <img src="https://images.unsplash.com/photo-1580489944761-15a19d654956?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=461&q=80" alt="Sarah Chen" class="speaker-img"> <div class="speaker-details"> <div class="speaker-name">Sarah Chen</div> <div class="speaker-title">Lead AI Researcher, FutureAI</div> </div> </div> <div class="speaker"> <img src="https://images.unsplash.com/photo-1531384441138-2736e62e0919?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=387&q=80" alt="Marcus Johnson" class="speaker-img"> <div class="speaker-details"> <div class="speaker-name">Marcus Johnson</div> <div class="speaker-title">Founder & CEO, NextGen Solutions</div> </div> </div> <a href="#speakers" class="cta-btn">View All Speakers</a> </div> </div> <div class="slide" style="background-image: url('https://images.unsplash.com/photo-1531482615713-2afd69097998?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80')"> <div class="slide-content"> <h1>Event Schedule</h1> <h2>Three Days of Innovation</h2> <div class="agenda-item"> <div class="agenda-time">09:00 AM</div> <div class="agenda-content"> <h4>Opening Keynote</h4> <p>The Future of Tech: Navigating the Next Decade</p> </div> </div> <div class="agenda-item"> <div class="agenda-time">11:30 AM</div> <div class="agenda-content"> <h4>Panel Discussion</h4> <p>Ethical AI: Balancing Innovation and Responsibility</p> </div> </div> <div class="agenda-item"> <div class="agenda-time">02:00 PM</div> <div class="agenda-content"> <h4>Workshop</h4> <p>Quantum Computing: Practical Applications for Today's Challenges</p> </div> </div> <a href="#schedule" class="cta-btn">Full Schedule</a> </div> </div> <div class="slide" style="background-image: url('https://images.unsplash.com/photo-1492684223066-81342ee5ff30?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80')"> <div class="slide-content"> <h1>Event Highlights</h1> <h2>Why You Can't Miss TechSummit 2024</h2> <div class="feature-grid"> <div class="feature"> <div class="feature-icon"> <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M12 16a4 4 0 100-8 4 4 0 000 8z" fill="#fff" /> <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" fill="#fff" /> </svg> </div> <div class="feature-text">50+ Interactive Sessions focused on cutting-edge technologies</div> </div> <div class="feature"> <div class="feature-icon"> <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5s-3 1.34-3 3 1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z" fill="#fff" /> </svg> </div> <div class="feature-text">Networking with 2,000+ tech professionals and decision-makers</div> </div> <div class="feature"> <div class="feature-icon"> <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M12 3L1 9l4 2.18v6L12 21l7-3.82v-6l2-1.09V17h2V9L12 3zm6.82 6L12 12.72 5.18 9 12 5.28 18.82 9zM17 15.99l-5 2.73-5-2.73v-3.72L12 15l5-2.73v3.72z" fill="#fff" /> </svg> </div> <div class="feature-text">Exclusive Product Launches and early-access demonstrations</div> </div> <div class="feature"> <div class="feature-icon"> <svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path d="M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9-4.03-9-9-9zm1 14h-2v-2h2v2zm0-3h-2V8h2v6z" fill="#fff" /> </svg> </div> <div class="feature-text">Hands-on Tech Labs with emerging technologies</div> </div> </div> <div class="location-pin"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5a2.5 2.5 0 010-5 2.5 2.5 0 010 5z" fill="#fff" /> </svg> <span>San Francisco Tech Center, California</span> </div> <a href="#register" class="cta-btn">Register Now</a> </div> </div> <div class="slide" style="background-image: url('https://images.unsplash.com/photo-1556761175-b413da4baf72?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1074&q=80')"> <div class="slide-content"> <h1>Our Partners</h1> <h2>Backed by Industry Leaders</h2> <p>TechSummit 2024 is proudly sponsored by leading technology innovators who are shaping our digital future.</p> <div class="sponsor-grid"> <div class="sponsor-logo"> <div class="logo">QUANTUM TECH</div> </div> <div class="sponsor-logo"> <div class="logo">NEXGEN</div> </div> <div class="sponsor-logo"> <div class="logo">FUTURE AI</div> </div> <div class="sponsor-logo"> <div class="logo">CLOUD MATRIX</div> </div> </div> <p><span class="highlight">Early bird discount:</span> Register before May 1st and save 30%!</p> <a href="#sponsors" class="cta-btn">Become a Sponsor</a> </div> </div> <button class="nav-arrow nav-arrow-prev"> <span class="arrow-icon arrow-prev"></span> </button> <button class="nav-arrow nav-arrow-next"> <span class="arrow-icon arrow-next"></span> </button> <div class="navigation"></div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Slideshow functionality const slides = document.querySelectorAll('.slide'); const navPrev = document.querySelector('.nav-arrow-prev'); const navNext = document.querySelector('.nav-arrow-next'); const navContainer = document.querySelector('.navigation'); let currentSlide = 0; let slideInterval; const intervalTime = 7000; // 7 seconds per slide // Create navigation dots slides.forEach((_, index) => { const dot = document.createElement('div'); dot.classList.add('nav-dot'); if (index === 0) dot.classList.add('active'); dot.addEventListener('click', () => { goToSlide(index); resetInterval(); }); navContainer.appendChild(dot); }); // Set the first slide as active slides[0].classList.add('active'); function goToSlide(n) { slides[currentSlide].classList.remove('active'); document.querySelectorAll('.nav-dot')[currentSlide].classList.remove('active'); currentSlide = (n + slides.length) % slides.length; slides[currentSlide].classList.add('active'); document.querySelectorAll('.nav-dot')[currentSlide].classList.add('active'); } function nextSlide() { goToSlide(currentSlide + 1); } function prevSlide() { goToSlide(currentSlide - 1); } function resetInterval() { clearInterval(slideInterval); slideInterval = setInterval(nextSlide, intervalTime); } // Event listeners for navigation navNext.addEventListener('click', () => { nextSlide(); resetInterval(); }); navPrev.addEventListener('click', () => { prevSlide(); resetInterval(); }); // Keyboard navigation document.addEventListener('keydown', (e) => { if (e.key === 'ArrowRight') { nextSlide(); resetInterval(); } else if (e.key === 'ArrowLeft') { prevSlide(); resetInterval(); } }); // Start the slideshow slideInterval = setInterval(nextSlide, intervalTime); // Prevent default action for anchor links (to keep within embed) document.querySelectorAll('a').forEach(link => { link.addEventListener('click', function(e) { e.preventDefault(); // Optional: Add some visual feedback when clicked this.classList.add('pulse'); setTimeout(() => { this.classList.remove('pulse'); }, 1000); }); }); // Countdown timer functionality function updateCountdown() { // Set the target date (example: 35 days from now) const now = new Date(); const targetDate = new Date(); targetDate.setDate(now.getDate() + 35); targetDate.setHours(8, 0, 0, 0); // 8 AM const difference = targetDate - now; const days = Math.floor(difference / (1000 * 60 * 60 * 24)); const hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((difference % (1000 * 60)) / 1000); document.getElementById('days').innerText = days.toString().padStart(2, '0'); document.getElementById('hours').innerText = hours.toString().padStart(2, '0'); document.getElementById('minutes').innerText = minutes.toString().padStart(2, '0'); document.getElementById('seconds').innerText = seconds.toString().padStart(2, '0'); } // Update countdown every second setInterval(updateCountdown, 1000); updateCountdown(); // Initial call }); </script> </body> </html>
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Portfolio Showcase</title> <style> :root { --primary-color: #2c3e50; --accent-color: #e74c3c; --secondary-color: #3498db; --light-color: #ecf0f1; --dark-color: #2c3e50; --transition: all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Helvetica Neue', Arial, sans-serif; } body { background-color: #f9f9f9; color: var(--dark-color); overflow-x: hidden; width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; } .portfolio-container { width: 100%; height: 700px; max-width: 700px; position: relative; overflow: hidden; box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1); border-radius: 12px; background-color: white; } .slideshow { width: 100%; height: 100%; position: relative; overflow: hidden; } .slide { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transform: translateX(100%); transition: var(--transition); display: flex; flex-direction: column; } .slide.active { opacity: 1; transform: translateX(0); z-index: 1; } .slide.prev { transform: translateX(-100%); } .slide-image { width: 100%; height: 65%; overflow: hidden; position: relative; } .slide-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.7s ease; } .slide:hover .slide-image img { transform: scale(1.05); } .slide-content { padding: 20px; height: 35%; display: flex; flex-direction: column; justify-content: space-between; background-color: white; position: relative; } .slide-content::before { content: ''; position: absolute; top: 0; left: 0; width: 3px; height: 0; background-color: var(--accent-color); transition: height 0.4s ease; } .slide.active .slide-content::before { height: 100%; transition-delay: 0.5s; } .slide-header { display: flex; justify-content: space-between; align-items: flex-start; } .slide-title { font-size: 24px; font-weight: 600; margin-bottom: 5px; color: var(--primary-color); padding-left: 10px; } .slide-category { font-size: 14px; text-transform: uppercase; letter-spacing: 1px; color: var(--accent-color); padding-left: 10px; } .slide-description { font-size: 15px; line-height: 1.5; color: #666; overflow-y: auto; max-height: 80px; padding-left: 10px; margin-top: 10px; } .slide-meta { display: flex; justify-content: space-between; align-items: center; margin-top: 15px; } .slide-client { font-size: 14px; color: #888; display: flex; align-items: center; } .client-avatar { width: 24px; height: 24px; border-radius: 50%; margin-right: 8px; object-fit: cover; } .slide-date { font-size: 14px; color: #888; } .navigation { position: absolute; bottom: 50%; transform: translateY(50%); width: 100%; display: flex; justify-content: space-between; padding: 0 15px; z-index: 10; pointer-events: none; } .nav-btn { background-color: rgba(255, 255, 255, 0.9); width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); transition: transform 0.3s ease, background-color 0.3s ease; pointer-events: auto; } .nav-btn:hover { transform: scale(1.1); background-color: var(--secondary-color); } .nav-btn:hover svg { fill: white; } .indicator-container { position: absolute; bottom: 10px; left: 50%; transform: translateX(-50%); display: flex; gap: 8px; z-index: 10; } .indicator { width: 8px; height: 8px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.5); cursor: pointer; transition: all 0.3s ease; } .indicator.active { width: 24px; border-radius: 4px; background-color: var(--accent-color); } /* Project tag animation */ .project-tag { position: absolute; top: -30px; right: 20px; background-color: var(--secondary-color); color: white; padding: 5px 15px; border-radius: 20px; font-size: 12px; font-weight: bold; text-transform: uppercase; transform: translateY(0); opacity: 0; transition: var(--transition); z-index: 5; } .slide.active .project-tag { top: 20px; opacity: 1; transition-delay: 0.3s; } /* Custom cursor for slideshow */ .custom-cursor { width: 40px; height: 40px; border: 2px solid var(--accent-color); border-radius: 50%; position: absolute; pointer-events: none; transform: translate(-50%, -50%); z-index: 999; mix-blend-mode: difference; transition: transform 0.1s ease, width 0.3s ease, height 0.3s ease; display: none; } /* Mobile responsiveness */ @media (max-width: 600px) { .slide-title { font-size: 20px; } .slide-description { font-size: 14px; max-height: 60px; } .slide-image { height: 60%; } .slide-content { height: 40%; padding: 15px; } .project-tag { right: 10px; padding: 4px 10px; font-size: 10px; } .nav-btn { width: 35px; height: 35px; } } /* Loading animation */ .loader { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: white; display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 1000; transition: opacity 0.5s ease, visibility 0.5s ease; } .loader.hidden { opacity: 0; visibility: hidden; } .loader-text { margin-top: 20px; font-size: 16px; color: var(--primary-color); font-weight: 500; } .spinner { width: 50px; height: 50px; border: 3px solid #f3f3f3; border-top: 3px solid var(--accent-color); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Progress bar */ .progress-container { position: absolute; top: 0; left: 0; width: 100%; height: 4px; background-color: rgba(0,0,0,0.1); z-index: 20; } .progress-bar { height: 100%; width: 0; background-color: var(--accent-color); transition: width 0.3s ease; } </style> </head> <body> <div class="portfolio-container"> <div class="custom-cursor"></div> <div class="loader"> <div class="spinner"></div> <p class="loader-text">Loading Portfolio...</p> </div> <div class="progress-container"> <div class="progress-bar"></div> </div> <div class="slideshow"> <!-- Slide 1 --> <div class="slide"> <div class="project-tag">Featured Project</div> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1523726491678-bf852e717f6a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" alt="Adaptive Kitchen Website Design"> </div> <div class="slide-content"> <div> <div class="slide-header"> <div> <h2 class="slide-title">Adaptive Kitchen</h2> <div class="slide-category">Web Design</div> </div> </div> <p class="slide-description">Complete e-commerce site redesign with a focus on accessibility and product visualization. Implemented dynamic product filtering and 3D kitchen previews, resulting in 43% increase in engagement.</p> </div> <div class="slide-meta"> <div class="slide-client"> <img src="https://randomuser.me/api/portraits/women/12.jpg" alt="Client" class="client-avatar"> <span>For Culinary Co.</span> </div> <div class="slide-date">Completed July 2023</div> </div> </div> </div> <!-- Slide 2 --> <div class="slide"> <div class="project-tag">Brand Identity</div> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1485452499676-62ab02c20e83?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" alt="Novo Branding"> </div> <div class="slide-content"> <div> <div class="slide-header"> <div> <h2 class="slide-title">Novo Branding</h2> <div class="slide-category">Brand Identity</div> </div> </div> <p class="slide-description">Complete rebrand for a sustainable tech startup. Created a visual language that communicates innovation while emphasizing environmental responsibility through a custom typeface and modular icon system.</p> </div> <div class="slide-meta"> <div class="slide-client"> <img src="https://randomuser.me/api/portraits/men/32.jpg" alt="Client" class="client-avatar"> <span>For Novo Tech</span> </div> <div class="slide-date">Completed March 2023</div> </div> </div> </div> <!-- Slide 3 --> <div class="slide"> <div class="project-tag">Motion Design</div> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1576267423445-b2e0074d68a4?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80" alt="Pulse App Animation"> </div> <div class="slide-content"> <div> <div class="slide-header"> <div> <h2 class="slide-title">Pulse App</h2> <div class="slide-category">UI Animation</div> </div> </div> <p class="slide-description">Created microinteractions and onboarding animations for a health tracking app. Focused on building intuitive feedback loops that enhance the user experience during activity tracking and goal setting.</p> </div> <div class="slide-meta"> <div class="slide-client"> <img src="https://randomuser.me/api/portraits/women/65.jpg" alt="Client" class="client-avatar"> <span>For MedTech Solutions</span> </div> <div class="slide-date">Completed November 2022</div> </div> </div> </div> <!-- Slide 4 --> <div class="slide"> <div class="project-tag">Photography</div> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1511367461989-f85a21fda167?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1631&q=80" alt="Urban Architecture Series"> </div> <div class="slide-content"> <div> <div class="slide-header"> <div> <h2 class="slide-title">Urban Perspectives</h2> <div class="slide-category">Photography</div> </div> </div> <p class="slide-description">Photo series exploring geometric patterns in urban architecture. Captured across five cities, this collection emphasizes the interplay between light, shape, and human-made structures with minimal post-processing.</p> </div> <div class="slide-meta"> <div class="slide-client"> <img src="https://randomuser.me/api/portraits/men/41.jpg" alt="Client" class="client-avatar"> <span>For ArchDaily Magazine</span> </div> <div class="slide-date">Completed January 2023</div> </div> </div> </div> <!-- Slide 5 --> <div class="slide"> <div class="project-tag">Product Design</div> <div class="slide-image"> <img src="https://images.unsplash.com/photo-1511988617509-a57c8a288659?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1471&q=80" alt="Foldable Lamp Design"> </div> <div class="slide-content"> <div> <div class="slide-header"> <div> <h2 class="slide-title">Helix Lamp</h2> <div class="slide-category">Product Design</div> </div> </div> <p class="slide-description">Modular lighting solution with adjustable brightness and color temperature. Designed for small spaces, the lamp folds flat for storage and uses eco-friendly materials with a focus on repairability and longevity.</p> </div> <div class="slide-meta"> <div class="slide-client"> <img src="https://randomuser.me/api/portraits/women/22.jpg" alt="Client" class="client-avatar"> <span>For Lumina Design</span> </div> <div class="slide-date">Completed April 2023</div> </div> </div> </div> <div class="navigation"> <div class="nav-btn prev-btn"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#2c3e50"> <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"/> </svg> </div> <div class="nav-btn next-btn"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#2c3e50"> <path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"/> </svg> </div> </div> <div class="indicator-container"></div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { // Simulate loading time setTimeout(() => { document.querySelector('.loader').classList.add('hidden'); initializeSlideshow(); }, 1500); function initializeSlideshow() { const slides = document.querySelectorAll('.slide'); const prevBtn = document.querySelector('.prev-btn'); const nextBtn = document.querySelector('.next-btn'); const progressBar = document.querySelector('.progress-bar'); const indicatorContainer = document.querySelector('.indicator-container'); const customCursor = document.querySelector('.custom-cursor'); const slideshow = document.querySelector('.slideshow'); let currentSlide = 0; let slideInterval; const autoSlideDelay = 5000; // 5 seconds // Initialize slides slides[0].classList.add('active'); // Create indicators slides.forEach((_, index) => { const indicator = document.createElement('div'); indicator.classList.add('indicator'); if (index === 0) indicator.classList.add('active'); indicator.addEventListener('click', () => goToSlide(index)); indicatorContainer.appendChild(indicator); }); const indicators = document.querySelectorAll('.indicator'); // Initialize progress bar updateProgressBar(0); // Event listeners prevBtn.addEventListener('click', prevSlide); nextBtn.addEventListener('click', nextSlide); // Custom cursor for slideshow slideshow.addEventListener('mousemove', (e) => { const rect = slideshow.getBoundingClientRect(); const x = e.clientX - rect.left; const y = e.clientY - rect.top; customCursor.style.display = 'block'; customCursor.style.left = `${x}px`; customCursor.style.top = `${y}px`; }); slideshow.addEventListener('mouseleave', () => { customCursor.style.display = 'none'; }); slideshow.addEventListener('mousedown', () => { customCursor.style.transform = 'translate(-50%, -50%) scale(0.8)'; }); slideshow.addEventListener('mouseup', () => { customCursor.style.transform = 'translate(-50%, -50%) scale(1)'; }); // Touch events for mobile let touchStartX = 0; let touchEndX = 0; slideshow.addEventListener('touchstart', (e) => { touchStartX = e.changedTouches[0].clientX; pauseAutoSlide(); }); slideshow.addEventListener('touchend', (e) => { touchEndX = e.changedTouches[0].clientX; handleSwipe(); startAutoSlide(); }); function handleSwipe() { const threshold = 50; if (touchStartX - touchEndX > threshold) { nextSlide(); } else if (touchEndX - touchStartX > threshold) { prevSlide(); } } // Functions function updateSlide() { slides.forEach((slide, index) => { slide.className = 'slide'; if (index === currentSlide) { slide.classList.add('active'); } else if (index < currentSlide || (currentSlide === 0 && index === slides.length - 1)) { slide.classList.add('prev'); } }); indicators.forEach((indicator, index) => { indicator.classList.toggle('active', index === currentSlide); }); updateProgressBar(0); animateProgressBar(); } function prevSlide() { currentSlide = (currentSlide - 1 + slides.length) % slides.length; updateSlide(); resetAutoSlide(); } function nextSlide() { currentSlide = (currentSlide + 1) % slides.length; updateSlide(); resetAutoSlide(); } function goToSlide(index) { currentSlide = index; updateSlide(); resetAutoSlide(); } function updateProgressBar(width) { progressBar.style.width = `${width}%`; } function animateProgressBar() { let width = 0; const interval = 50; // Update every 50ms const increment = (interval / autoSlideDelay) * 100; const progressInterval = setInterval(() => { width += increment; if (width >= 100) { clearInterval(progressInterval); } else { updateProgressBar(width); } }, interval); // Store the interval ID to clear it if needed progressBar.dataset.intervalId = progressInterval; } function startAutoSlide() { slideInterval = setInterval(nextSlide, autoSlideDelay); animateProgressBar(); } function pauseAutoSlide() { clearInterval(slideInterval); const progressInterval = progressBar.dataset.intervalId; if (progressInterval) clearInterval(parseInt(progressInterval)); } function resetAutoSlide() { pauseAutoSlide(); startAutoSlide(); } // Start the automatic slideshow startAutoSlide(); // Event listeners for pausing/resuming autoplay slideshow.addEventListener('mouseenter', pauseAutoSlide); slideshow.addEventListener('mouseleave', startAutoSlide); } }); </script> </body> </html>