40 lines
1.8 KiB
JavaScript
40 lines
1.8 KiB
JavaScript
// @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt CC0-1.0
|
|
// burger.js
|
|
|
|
function toggleMenu() {
|
|
const menu = document.querySelector(".menu");
|
|
|
|
// Toggle the 'active' class to show/hide the menu
|
|
menu.classList.toggle("active");
|
|
|
|
// Apply animations based on the menu's visibility
|
|
if (menu.classList.contains("active")) {
|
|
menu.style.animation = "slideIn 0.3s forwards"; // Menu is shown here
|
|
document.addEventListener("click", closeMenu); // Event listener added to close menu
|
|
} else {
|
|
menu.style.animation = "slideOut 0.3s forwards"; // Menu is hidden here
|
|
// Remove the event listener to close the menu (this line removes the event listener, not closes the menu)
|
|
document.removeEventListener("click", closeMenu);
|
|
// Reset animation after it's completed
|
|
menu.addEventListener("animationend", () => {
|
|
menu.style.animation = ""; // Animation reset after hiding menu
|
|
}, { once: true });
|
|
}
|
|
}
|
|
|
|
function closeMenu(event) {
|
|
const menu = document.querySelector(".menu");
|
|
// Check if the click is outside the menu and not on the burger icon
|
|
if (!menu.contains(event.target) && !event.target.classList.contains("burger-menu")) {
|
|
menu.style.animation = "slideOut 0.3s forwards"; // Menu is hidden here
|
|
// Remove the event listener to close the menu (again, this line removes the event listener)
|
|
document.removeEventListener("click", closeMenu);
|
|
// After animation completes, remove 'active' class and reset animation
|
|
menu.addEventListener("animationend", function() {
|
|
menu.classList.remove("active"); // 'active' class removed after animation completes
|
|
menu.style.animation = ""; // Animation reset after hiding menu
|
|
}, { once: true });
|
|
}
|
|
}
|
|
|
|
// @license-end
|