<script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script> <script nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script> <!-- Navigation --> <nav> <div class="logo"> <ion-icon name="rocket-outline"></ion-icon> <span>MenuApp</span> </div> <div class="hamburger" onclick="toggleMenu()"> <span></span> <span></span> <span></span> </div> </nav> <!-- Menu Overlay --> <div class="menu-overlay" id="menuOverlay"> <ul class="menu-items"> <li><a href="#"><ion-icon name="home-outline"></ion-icon> Home</a></li> <li><a href="#"><ion-icon name="grid-outline"></ion-icon> Services</a></li> <li><a href="#"><ion-icon name="briefcase-outline"></ion-icon> Portfolio</a></li> <li><a href="#"><ion-icon name="people-outline"></ion-icon> About Us</a></li> <li><a href="#"><ion-icon name="newspaper-outline"></ion-icon> Blog</a></li> <li><a href="#"><ion-icon name="mail-outline"></ion-icon> Contact</a></li> </ul> <div class="menu-footer"> <div class="social-links"> <a href="#"><ion-icon name="logo-twitter"></ion-icon></a> <a href="#"><ion-icon name="logo-linkedin"></ion-icon></a> <a href="#"><ion-icon name="logo-instagram"></ion-icon></a> <a href="#"><ion-icon name="logo-github"></ion-icon></a> </div> <p>ยฉ 2025 MenuApp. All rights reserved.</p> </div> </div> <!-- Main Content --> <main> <div class="hero"> <h1>Animated Hamburger Menu</h1> <p>Click the hamburger icon to reveal a smooth, professional slide-in menu with animated items</p> </div> <div class="features"> <div class="feature-card"> <ion-icon name="color-palette-outline"></ion-icon> <h3>Custom Color</h3> <p>Using #001233 for elegant dark theme</p> </div> <div class="feature-card"> <ion-icon name="flash-outline"></ion-icon> <h3>Smooth Animation</h3> <p>CSS transitions for professional feel</p> </div> <div class="feature-card"> <ion-icon name="phone-portrait-outline"></ion-icon> <h3>Responsive Design</h3> <p>Works perfectly on all devices</p> </div> </div> </main>
* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: #f8f9fa; } /* Navigation Bar */ nav { background: white; padding: 1.25rem 2rem; box-shadow: 0 2px 10px rgba(0, 18, 51, 0.1); position: fixed; width: 100%; top: 0; z-index: 1000; display: flex; justify-content: space-between; align-items: center; } .logo { font-size: 1.5rem; font-weight: 700; color: #001233; display: flex; align-items: center; gap: 0.5rem; } .logo ion-icon { font-size: 1.75rem; } /* Hamburger Button */ .hamburger { width: 30px; height: 24px; position: relative; cursor: pointer; z-index: 1001; } .hamburger span { display: block; position: absolute; height: 3px; width: 100%; background: #001233; border-radius: 3px; opacity: 1; left: 0; transition: all 0.3s ease; } .hamburger span:nth-child(1) { top: 0; } .hamburger span:nth-child(2) { top: 10px; } .hamburger span:nth-child(3) { top: 20px; } .hamburger.active span:nth-child(1) { top: 10px; transform: rotate(135deg); } .hamburger.active span:nth-child(2) { opacity: 0; left: -30px; } .hamburger.active span:nth-child(3) { top: 10px; transform: rotate(-135deg); } /* Menu Overlay */ .menu-overlay { position: fixed; top: 0; right: -100%; width: 100%; max-width: 400px; height: 100vh; background: #001233; transition: right 0.4s ease; z-index: 999; padding: 6rem 2rem 2rem; overflow-y: auto; } .menu-overlay.active { right: 0; } /* Menu Items */ .menu-items { list-style: none; } .menu-items li { margin-bottom: 1.5rem; opacity: 0; transform: translateX(50px); transition: all 0.3s ease; } .menu-overlay.active .menu-items li { opacity: 1; transform: translateX(0); } .menu-overlay.active .menu-items li:nth-child(1) { transition-delay: 0.1s; } .menu-overlay.active .menu-items li:nth-child(2) { transition-delay: 0.2s; } .menu-overlay.active .menu-items li:nth-child(3) { transition-delay: 0.3s; } .menu-overlay.active .menu-items li:nth-child(4) { transition-delay: 0.4s; } .menu-overlay.active .menu-items li:nth-child(5) { transition-delay: 0.5s; } .menu-overlay.active .menu-items li:nth-child(6) { transition-delay: 0.6s; } .menu-items a { color: white; text-decoration: none; font-size: 1.5rem; font-weight: 500; display: flex; align-items: center; gap: 1rem; padding: 0.75rem 1rem; border-radius: 8px; transition: all 0.3s ease; } .menu-items a ion-icon { font-size: 1.75rem; } .menu-items a:hover { background: rgba(255, 255, 255, 0.1); transform: translateX(10px); } /* Menu Footer */ .menu-footer { position: absolute; bottom: 2rem; left: 2rem; right: 2rem; padding-top: 2rem; border-top: 1px solid rgba(255, 255, 255, 0.2); opacity: 0; transition: opacity 0.3s ease 0.7s; } .menu-overlay.active .menu-footer { opacity: 1; } .social-links { display: flex; gap: 1rem; margin-bottom: 1rem; } .social-links a { color: white; font-size: 1.5rem; transition: all 0.3s ease; } .social-links a:hover { color: #64b5f6; transform: translateY(-3px); } .menu-footer p { color: rgba(255, 255, 255, 0.6); font-size: 0.875rem; } /* Main Content */ main { margin-top: 5rem; padding: 2rem; max-width: 1200px; margin-left: auto; margin-right: auto; } .hero { background: white; padding: 3rem; border-radius: 16px; box-shadow: 0 5px 20px rgba(0, 18, 51, 0.08); text-align: center; } .hero h1 { color: #001233; font-size: 2.5rem; margin-bottom: 1rem; } .hero p { color: #6c757d; font-size: 1.125rem; line-height: 1.6; } .features { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 2rem; margin-top: 2rem; } .feature-card { background: white; padding: 2rem; border-radius: 12px; box-shadow: 0 3px 15px rgba(0, 18, 51, 0.08); text-align: center; transition: transform 0.3s ease; } .feature-card:hover { transform: translateY(-5px); } .feature-card ion-icon { font-size: 3rem; color: #001233; margin-bottom: 1rem; } .feature-card h3 { color: #001233; margin-bottom: 0.5rem; } .feature-card p { color: #6c757d; font-size: 0.925rem; }
function toggleMenu() { const hamburger = document.querySelector('.hamburger'); const menuOverlay = document.getElementById('menuOverlay'); hamburger.classList.toggle('active'); menuOverlay.classList.toggle('active'); } // Close menu when clicking outside document.addEventListener('click', function(event) { const hamburger = document.querySelector('.hamburger'); const menuOverlay = document.getElementById('menuOverlay'); if (!hamburger.contains(event.target) && !menuOverlay.contains(event.target)) { hamburger.classList.remove('active'); menuOverlay.classList.remove('active'); } });
Login to leave a comment
No comments yet. Be the first!
View Project
No comments yet. Be the first!