<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> <div class="container"> <div class="hamburger-container"> <div class="hamburger" onclick="toggleMenu(this)"> <span></span> <span></span> <span></span> </div> </div> <h2>Animated Hamburger Icon</h2> <p class="subtitle">Click to toggle between states</p> <div class="variants"> <div class="variant"> <div class="hamburger hamburger-arrow" onclick="toggleMenu(this)"> <span></span> <span></span> <span></span> </div> <h3>Arrow Style</h3> </div> <div class="variant"> <div class="hamburger hamburger-spin" onclick="toggleMenu(this)"> <span></span> <span></span> <span></span> </div> <h3>Spin Style</h3> </div> <div class="variant"> <div class="hamburger" onclick="toggleMenu(this)"> <span></span> <span></span> <span></span> </div> <h3>Classic X</h3> </div> </div> <div class="info"> <ion-icon name="color-wand-outline"></ion-icon> <span>Using color #240046</span> </div> </div>
* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; height: 100vh; display: flex; justify-content: center; align-items: center; background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); } .container { text-align: center; } .hamburger-container { background: white; padding: 3rem; border-radius: 20px; box-shadow: 0 10px 40px rgba(36, 0, 70, 0.15); margin-bottom: 2rem; } .hamburger { width: 50px; height: 40px; position: relative; cursor: pointer; display: inline-block; } .hamburger span { display: block; position: absolute; height: 4px; width: 100%; background: #240046; border-radius: 4px; opacity: 1; left: 0; transition: all 0.3s ease-in-out; } .hamburger span:nth-child(1) { top: 0; } .hamburger span:nth-child(2) { top: 18px; } .hamburger span:nth-child(3) { top: 36px; } .hamburger.active span:nth-child(1) { top: 18px; transform: rotate(135deg); } .hamburger.active span:nth-child(2) { opacity: 0; left: -60px; } .hamburger.active span:nth-child(3) { top: 18px; transform: rotate(-135deg); } h2 { color: #240046; font-size: 1.75rem; margin-bottom: 0.5rem; font-weight: 600; } .subtitle { color: #6c757d; font-size: 1rem; margin-bottom: 2rem; } .variants { display: flex; gap: 2rem; justify-content: center; flex-wrap: wrap; margin-top: 3rem; } .variant { background: white; padding: 2rem; border-radius: 16px; box-shadow: 0 5px 20px rgba(36, 0, 70, 0.1); min-width: 150px; } .variant h3 { color: #240046; font-size: 0.875rem; margin-top: 1rem; font-weight: 500; } /* Arrow Variant */ .hamburger-arrow span:nth-child(1) { width: 70%; } .hamburger-arrow span:nth-child(3) { width: 70%; } .hamburger-arrow.active span:nth-child(1) { width: 50%; top: 14px; transform: rotate(45deg); } .hamburger-arrow.active span:nth-child(2) { opacity: 1; left: 0; width: 100%; } .hamburger-arrow.active span:nth-child(3) { width: 50%; top: 22px; transform: rotate(-45deg); } /* Spin Variant */ .hamburger-spin.active span:nth-child(1) { top: 18px; transform: rotate(90deg); } .hamburger-spin.active span:nth-child(3) { top: 18px; transform: rotate(90deg); } .info { display: flex; align-items: center; justify-content: center; gap: 0.5rem; color: #6c757d; font-size: 0.875rem; margin-top: 2rem; } .info ion-icon { font-size: 1.25rem; color: #240046; }
function toggleMenu(element) { element.classList.toggle('active'); }
Login to leave a comment
No comments yet. Be the first!
View Project
No comments yet. Be the first!