diff options
| author | Danilo M. <danix@danix.xyz> | 2026-04-16 15:51:55 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-04-16 15:51:55 +0200 |
| commit | a614ed818b7d435546bb86a887f97de53f019af1 (patch) | |
| tree | c9ec669afca70a101d484de24deeef7cc6206fd3 /themes/danix-xyz-hacker/layouts/partials/hamburger-menu.html | |
| parent | f77e36d9f0eb4405db46a7972738773802a8d646 (diff) | |
| download | danixxyz-a614ed818b7d435546bb86a887f97de53f019af1.tar.gz danixxyz-a614ed818b7d435546bb86a887f97de53f019af1.zip | |
fix: hamburger menu click handler and horizontal scroll issues
- Improve hamburger menu JS with better error handling and console warnings
- Add preventDefault() to button click handlers for reliability
- Handle document ready state check (in case script runs before DOMContentLoaded)
- Add overflow-x-hidden to html and body to prevent horizontal scrolling on mobile
- Rebuild CSS: main.min.css updated
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Diffstat (limited to 'themes/danix-xyz-hacker/layouts/partials/hamburger-menu.html')
| -rw-r--r-- | themes/danix-xyz-hacker/layouts/partials/hamburger-menu.html | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/themes/danix-xyz-hacker/layouts/partials/hamburger-menu.html b/themes/danix-xyz-hacker/layouts/partials/hamburger-menu.html index 4260456..4d02d9c 100644 --- a/themes/danix-xyz-hacker/layouts/partials/hamburger-menu.html +++ b/themes/danix-xyz-hacker/layouts/partials/hamburger-menu.html @@ -66,12 +66,21 @@ </div> <script> - document.addEventListener('DOMContentLoaded', () => { + function initializeHamburgerMenu() { const menuToggle = document.getElementById('menu-toggle'); const menuClose = document.getElementById('menu-close'); const menuOverlay = document.getElementById('menu-overlay'); const hamburgerMenu = document.getElementById('hamburger-menu'); + if (!menuToggle || !menuOverlay || !hamburgerMenu) { + console.warn('Hamburger menu elements not found', { + menuToggle: !!menuToggle, + menuOverlay: !!menuOverlay, + hamburgerMenu: !!hamburgerMenu + }); + return; + } + const openMenu = () => { menuOverlay.classList.remove('opacity-0', 'invisible'); hamburgerMenu.classList.remove('translate-x-full'); @@ -89,20 +98,22 @@ }; // Toggle button click - if (menuToggle) { - menuToggle.addEventListener('click', (e) => { - e.stopPropagation(); - if (menuOverlay.classList.contains('opacity-0')) { - openMenu(); - } else { - closeMenu(); - } - }); - } + menuToggle.addEventListener('click', (e) => { + e.preventDefault(); + e.stopPropagation(); + if (menuOverlay.classList.contains('opacity-0')) { + openMenu(); + } else { + closeMenu(); + } + }); // Close button click if (menuClose) { - menuClose.addEventListener('click', closeMenu); + menuClose.addEventListener('click', (e) => { + e.preventDefault(); + closeMenu(); + }); } // Close on ESC key @@ -115,7 +126,9 @@ // Close when clicking menu links const menuLinks = hamburgerMenu.querySelectorAll('a'); menuLinks.forEach(link => { - link.addEventListener('click', closeMenu); + link.addEventListener('click', (e) => { + closeMenu(); + }); }); // Close when clicking the overlay (but not the menu panel) @@ -124,5 +137,12 @@ closeMenu(); } }); - }); + } + + // Run when DOM is ready + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initializeHamburgerMenu); + } else { + initializeHamburgerMenu(); + } </script> |
