Chatta con l'AIChat
// MOBILE MENU FUNCTIONALITY
const mobileToggle = document.querySelector('.mobile-menu-toggle');
const mobileOverlay = document.querySelector('.mobile-menu-overlay');
const mobileClose = document.querySelector('.mobile-menu-close');
const mobileNavLinks = document.querySelectorAll('.mobile-nav-link');
const body = document.body;
function openMobileMenu() {
mobileOverlay.classList.add('active');
mobileToggle.setAttribute('aria-expanded', 'true');
mobileOverlay.setAttribute('aria-hidden', 'false');
body.style.overflow = 'hidden';
// Focus management for accessibility
mobileClose.focus();
}
function closeMobileMenu() {
mobileOverlay.classList.remove('active');
mobileToggle.setAttribute('aria-expanded', 'false');
mobileOverlay.setAttribute('aria-hidden', 'true');
body.style.overflow = '';
// Return focus to toggle button
mobileToggle.focus();
}
// Toggle menu when hamburger is clicked
if (mobileToggle) {
mobileToggle.addEventListener('click', function(e) {
e.stopPropagation();
const isOpen = mobileOverlay.classList.contains('active');
if (isOpen) {
closeMobileMenu();
} else {
openMobileMenu();
}
});
}
// Close menu when close button is clicked
if (mobileClose) {
mobileClose.addEventListener('click', function(e) {
e.stopPropagation();
closeMobileMenu();
});
}
// Close menu when clicking on overlay background
if (mobileOverlay) {
mobileOverlay.addEventListener('click', function(e) {
if (e.target === mobileOverlay) {
closeMobileMenu();
}
});
}
// Close menu when clicking on navigation links
mobileNavLinks.forEach(link => {
link.addEventListener('click', function() {
closeMobileMenu();
});
});
// Handle escape key to close menu
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape' && mobileOverlay.classList.contains('active')) {
closeMobileMenu();
}
});
// Handle window resize to close menu if screen becomes large
window.addEventListener('resize', function() {
if (window.innerWidth > 1280 && mobileOverlay.classList.contains('active')) {
closeMobileMenu();
}
});