Yoga Footer Template
Preview
Edit
Download
Run
Download Options
HTML File
Download as .html file
CSS File
Download as .css file
JavaScript File
Download as .js file
Combined HTML
All code in one HTML file
Project ZIP
All files in a ZIP archive
Cancel
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Yoga Classes - Futuristic Footer</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet"> </head> <body> <footer class="footer-container"> <div class="footer-wave"></div> <div class="yoga-icon yoga-icon-1"> <i class="fas fa-spa"></i> </div> <div class="yoga-icon yoga-icon-2"> <i class="fas fa-lotus"></i> </div> <div class="yoga-icon yoga-icon-3"> <i class="fas fa-peace"></i> </div> <div class="footer-content"> <div class="footer-column"> <div class="footer-logo"> <img src="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><path fill='%23d4af37' d='M50,15c19.3,0,35,15.7,35,35c0,8.1-2.8,15.5-7.4,21.4l-8.1-8.1c3.3-4.3,5.2-9.6,5.2-15.3c0-13-10.5-23.5-23.5-23.5S26.5,37,26.5,50c0,5.7,2,11,5.4,15.3l-8.3,8.3C19.2,67.6,15,59.3,15,50C15,30.7,30.7,15,50,15z'/><path fill='%23d4af37' d='M50,85c-19.3,0-35-15.7-35-35c0-8.1,2.8-15.5,7.4-21.4l8.1,8.1C27.2,41,25.3,46.3,25.3,50c0,13,10.5,23.5,23.5,23.5S73.5,63,73.5,50c0-5.7-2-11-5.4-15.3l8.3-8.3C80.8,32.4,85,40.7,85,50C85,69.3,69.3,85,50,85z'/><circle fill='%23d4af37' cx='50' cy='50' r='10'/></svg>" alt="Yoga Logo"> <h2>SereneFlow Yoga</h2> </div> <p>Find your balance, peace and happiness through our transformative yoga classes. Join our community and start your journey to wellness today.</p> <div class="social-links"> <a href="#"><i class="fab fa-facebook-f"></i></a> <a href="#"><i class="fab fa-instagram"></i></a> <a href="#"><i class="fab fa-twitter"></i></a> <a href="#"><i class="fab fa-youtube"></i></a> </div> </div> <div class="footer-column"> <h3>Quick Links</h3> <ul class="footer-links"> <li><a href="#"><i class="fas fa-chevron-right"></i> Home</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> About Us</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> Classes</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> Teachers</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> Pricing</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> Contact</a></li> </ul> </div> <div class="footer-column"> <h3>Yoga Classes</h3> <ul class="footer-links"> <li><a href="#"><i class="fas fa-chevron-right"></i> Hatha Yoga</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> Vinyasa Flow</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> Ashtanga Yoga</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> Yin Yoga</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> Kundalini Yoga</a></li> <li><a href="#"><i class="fas fa-chevron-right"></i> Meditation</a></li> </ul> </div> <div class="footer-column"> <h3>Newsletter</h3> <p>Subscribe to our newsletter to receive updates on new classes, special offers and wellness tips.</p> <div class="footer-subscribe"> <input type="email" placeholder="Your Email Address"> <button type="submit">Subscribe <i class="fas fa-paper-plane"></i></button> </div> </div> </div> <div class="footer-wave-bottom"></div> <div class="footer-bottom"> <p>© 2023 SereneFlow Yoga. All Rights Reserved. | Designed with <i class="fas fa-heart" style="color: #ff6b6b;"></i> by <a href="#">YogaDesign</a></p> </div> </footer> </body> </html>
CSS
:root { --maroon-primary: #800020; --maroon-light: #a83232; --maroon-dark: #500000; --gold-accent: #d4af37; --text-light: #f8f8f8; --text-gray: #cccccc; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', Arial, sans-serif; } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } @keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.8; } } @keyframes wave { 0% { background-position-x: 0; } 100% { background-position-x: 1000px; } } @keyframes wave2 { 0% { background-position-x: 0; } 100% { background-position-x: -1000px; } } body { background-color: #f5f5f5; } .footer-container { width: 100%; background: linear-gradient(135deg, var(--maroon-dark), var(--maroon-primary)); color: var(--text-light); padding: 60px 0 0; position: relative; overflow: hidden; } .footer-wave { position: absolute; top: 0; left: 0; width: 100%; height: 100px; background: url('data:image/svg+xml;utf8,<svg viewBox="0 0 1200 120" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none"><path d="M0,0V46.29c47.79,22.2,103.59,32.17,158,28,70.36-5.37,136.33-33.31,206.8-37.5C438.64,32.43,512.34,53.67,583,72.05c69.27,18,138.3,24.88,209.4,13.08,36.15-6,69.85-17.84,104.45-29.34C989.49,25,1113-14.29,1200,52.47V0Z" fill="%23800020" opacity=".25"/><path d="M0,0V15.81C13,36.92,27.64,56.86,47.69,72.05,99.41,111.27,165,111,224.58,91.58c31.15-10.15,60.09-26.07,89.67-39.8,40.92-19,84.73-46,130.83-49.67,36.26-2.85,70.9,9.42,98.6,31.56,31.77,25.39,62.32,62,103.63,73,40.44,10.79,81.35-6.69,119.13-24.28s75.16-39,116.92-43.05c59.73-5.85,113.28,22.88,168.9,38.84,30.2,8.66,59,6.17,87.09-7.5,22.43-10.89,48-26.93,60.65-49.24V0Z" fill="%23800020" opacity=".5"/><path d="M0,0V5.63C149.93,59,314.09,71.32,475.83,42.57c43-7.64,84.23-20.12,127.61-26.46,59-8.63,112.48,12.24,165.56,35.4C827.93,77.22,886,95.24,951.2,90c86.53-7,172.46-45.71,248.8-84.81V0Z" fill="%23800020"/></svg>'); background-size: cover; animation: wave 30s linear infinite; } .footer-wave-bottom { position: absolute; bottom: 0; left: 0; width: 100%; height: 100px; background: url('data:image/svg+xml;utf8,<svg viewBox="0 0 1200 120" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none"><path d="M0,0V46.29c47.79,22.2,103.59,32.17,158,28,70.36-5.37,136.33-33.31,206.8-37.5C438.64,32.43,512.34,53.67,583,72.05c69.27,18,138.3,24.88,209.4,13.08,36.15-6,69.85-17.84,104.45-29.34C989.49,25,1113-14.29,1200,52.47V0Z" fill="%23500000" opacity=".25"/><path d="M0,0V15.81C13,36.92,27.64,56.86,47.69,72.05,99.41,111.27,165,111,224.58,91.58c31.15-10.15,60.09-26.07,89.67-39.8,40.92-19,84.73-46,130.83-49.67,36.26-2.85,70.9,9.42,98.6,31.56,31.77,25.39,62.32,62,103.63,73,40.44,10.79,81.35-6.69,119.13-24.28s75.16-39,116.92-43.05c59.73-5.85,113.28,22.88,168.9,38.84,30.2,8.66,59,6.17,87.09-7.5,22.43-10.89,48-26.93,60.65-49.24V0Z" fill="%23500000" opacity=".5"/><path d="M0,0V5.63C149.93,59,314.09,71.32,475.83,42.57c43-7.64,84.23-20.12,127.61-26.46,59-8.63,112.48,12.24,165.56,35.4C827.93,77.22,886,95.24,951.2,90c86.53-7,172.46-45.71,248.8-84.81V0Z" fill="%23500000"/></svg>'); background-size: cover; transform: rotate(180deg); animation: wave2 25s linear infinite; } .footer-content { max-width: 1200px; margin: 0 auto; padding: 0 20px; display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 40px; position: relative; z-index: 1; } .footer-column { margin-bottom: 30px; } .footer-logo { display: flex; align-items: center; margin-bottom: 20px; animation: pulse 4s ease-in-out infinite; } .footer-logo img { width: 50px; height: 50px; margin-right: 15px; } .footer-logo h2 { font-size: 24px; font-weight: 700; background: linear-gradient(to right, var(--gold-accent), #f8f8f8); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .footer-column h3 { font-size: 20px; margin-bottom: 25px; position: relative; padding-bottom: 10px; color: var(--gold-accent); } .footer-column h3::after { content: ''; position: absolute; left: 0; bottom: 0; width: 50px; height: 2px; background: var(--gold-accent); } .footer-column p { margin-bottom: 20px; line-height: 1.6; color: var(--text-gray); } .footer-links { list-style: none; } .footer-links li { margin-bottom: 15px; } .footer-links a { color: var(--text-gray); text-decoration: none; transition: all 0.3s ease; display: flex; align-items: center; } .footer-links a:hover { color: var(--gold-accent); transform: translateX(5px); } .footer-links a i { margin-right: 10px; font-size: 14px; } .social-links { display: flex; gap: 15px; margin-top: 20px; } .social-links a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; background: rgba(255, 255, 255, 0.1); border-radius: 50%; color: var(--text-light); transition: all 0.3s ease; } .social-links a:hover { background: var(--gold-accent); color: var(--maroon-primary); transform: translateY(-5px); } .footer-subscribe input { width: 100%; padding: 12px; margin-bottom: 15px; background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 4px; color: var(--text-light); outline: none; transition: all 0.3s ease; } .footer-subscribe input:focus { border-color: var(--gold-accent); background: rgba(255, 255, 255, 0.2); } .footer-subscribe button { background: var(--gold-accent); color: var(--maroon-primary); border: none; padding: 12px 25px; border-radius: 4px; cursor: pointer; font-weight: 600; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; width: 100%; } .footer-subscribe button:hover { background: #e8c252; transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); } .footer-subscribe button i { margin-left: 8px; } .footer-bottom { background: var(--maroon-dark); padding: 20px 0; text-align: center; position: relative; z-index: 1; } .footer-bottom p { color: var(--text-gray); font-size: 14px; } .footer-bottom p a { color: var(--gold-accent); text-decoration: none; transition: all 0.3s ease; } .footer-bottom p a:hover { text-decoration: underline; } .yoga-icon { position: absolute; opacity: 0.1; z-index: 0; } .yoga-icon-1 { top: 20%; right: 5%; font-size: 100px; animation: float 6s ease-in-out infinite; } .yoga-icon-2 { bottom: 25%; left: 8%; font-size: 80px; animation: float 7s ease-in-out infinite 1s; } .yoga-icon-3 { top: 40%; left: 15%; font-size: 60px; animation: float 5s ease-in-out infinite 0.5s; } /* Responsive Styles */ @media (max-width: 992px) { .footer-content { grid-template-columns: repeat(2, 1fr); } .yoga-icon-1 { font-size: 80px; right: 2%; } .yoga-icon-2 { font-size: 60px; left: 2%; } .yoga-icon-3 { display: none; } } @media (max-width: 768px) { .footer-content { grid-template-columns: 1fr; gap: 30px; } .footer-column { margin-bottom: 20px; } .footer-logo h2 { font-size: 20px; } .footer-column h3 { font-size: 18px; margin-bottom: 15px; } .yoga-icon-1, .yoga-icon-2 { display: none; } } @media (max-width: 480px) { .footer-container { padding-top: 40px; } .footer-wave, .footer-wave-bottom { height: 60px; } .footer-logo img { width: 40px; height: 40px; } .social-links { justify-content: center; } }
JavaScript
// Add animation to elements when they come into view document.addEventListener('DOMContentLoaded', function() { const observerOptions = { threshold: 0.1 }; const observer = new IntersectionObserver(function(entries, observer) { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('animate'); observer.unobserve(entry.target); } }); }, observerOptions); // Observe all footer columns document.querySelectorAll('.footer-column').forEach((column, index) => { observer.observe(column); // Add delay based on index for staggered animation column.style.transitionDelay = `${index * 0.1}s`; }); // Floating yoga icons animation const yogaIcons = document.querySelectorAll('.yoga-icon'); yogaIcons.forEach(icon => { icon.style.left = `${Math.random() * 80 + 10}%`; icon.style.top = `${Math.random() * 60 + 20}%`; }); // Wave animation speed control based on scroll let lastScrollPosition = 0; const wave = document.querySelector('.footer-wave'); const waveBottom = document.querySelector('.footer-wave-bottom'); window.addEventListener('scroll', function() { const currentScrollPosition = window.pageYOffset; if (Math.abs(currentScrollPosition - lastScrollPosition) > 5) { const speed = Math.min(5, Math.abs(currentScrollPosition - lastScrollPosition) / 10); if (currentScrollPosition > lastScrollPosition) { // Scrolling down wave.style.animationDuration = `${30 / (1 + speed)}s`; waveBottom.style.animationDuration = `${25 / (1 + speed)}s`; } else { // Scrolling up wave.style.animationDuration = `${30 * (1 + speed)}s`; waveBottom.style.animationDuration = `${25 * (1 + speed)}s`; } lastScrollPosition = currentScrollPosition; } }); });
Output Preview
Desktop
Mobile
Fullscreen