- This topic has 15 replies, 3 voices, and was last updated 3 years, 4 months ago by
Tom.
-
AuthorPosts
-
November 14, 2022 at 1:33 am #2414453
PxProd
Hi there,
i followed this GP guide for an animated burger icon. for some reason i did not get it to work so i searched for some help here in the forums. i found this extented guide which did it for me (almost, needed to do some adjusments), but for some reason the icon animation also triggers when i’am clicking on a navigation item within the flyout menu.
I’am using the standard mobile header with off-canvas panel.
any idea whats the problem? is the gp guide still up to date?
November 15, 2022 at 3:39 am #2416161David
StaffCustomer SupportHi there,
sorry for the delay, this topic slipped through the net.
See this line in the script:
menuItems = document.querySelectorAll('nav ul a')What happens if you change it to:
menuItems = document.querySelectorAll('nav ul li:not(.menu-item-has-children) > a')November 15, 2022 at 8:32 am #2416811PxProd
hi david,
no problem, thanks for your input. that did it, thanks! 🙂
however, i am still wondering if the guide is no longer up to date or if i have done something wrong. is the guide still up to date?
November 15, 2022 at 9:02 am #2416844David
StaffCustomer SupportNothing you did wrong.
It just needed tweaking to your sites needs ie. the sub menu parent items having just a#link.November 16, 2022 at 7:31 am #2418022PxProd
hi david,
ahh i see, got it!
now i activated the sticky header, but the animation does not work within sticky.
any idea why? the markup seems to be the same.November 16, 2022 at 8:26 am #2418382David
StaffCustomer SupportOh no 🙂
can you share a link to where i can see this ?November 17, 2022 at 1:36 am #2419201PxProd
hi david,
sure, if its not in my first post anymore, here it comes again:
November 18, 2022 at 8:52 pm #2422413Tom
Lead DeveloperLead DeveloperHi there,
Can you share the full javascript code that you’re using now so I can take a closer look?
Let me know 🙂
November 21, 2022 at 7:18 am #2425417PxProd
hi tom,
sure, got it from the ‘extended guide’ of my first post:
// BURGER MENU ICON ANIMATION // ============================================================================= add_action( 'wp_footer', function() { ?> <script> var hamburgers = document.querySelectorAll(".hamburger"), menuToggle = document.querySelector( '.menu-toggle' ), menuItems = document.querySelectorAll('nav ul li:not(.menu-item-has-children) > a'), htmlEl = document.documentElement; menuToggle.addEventListener("click", function() { for ( var h = 0; h < hamburgers.length; h++ ) { hamburgers[h].classList.toggle("is-active"); } } ); for ( var i = 0; i < menuItems.length; i++ ) { menuItems[i].addEventListener( 'click', function( e ) { var closest_nav = this.closest( 'nav' ); if ( closest_nav.classList.contains( 'toggled' ) || htmlEl.classList.contains( 'slide-opened' ) ) { var url = this.getAttribute( 'href' ); var hash = url.split('#')[1]; // Open the sub-menu if the link has no destination if ( '#' === url ) { e.preventDefault(); for ( var h = 0; h < hamburgers.length; h++ ) { hamburgers[h].classList.toggle("is-active"); } } } }, false ); } var checkHamburgers = function() { var openedMobileMenus = document.querySelectorAll( '.toggled, .has-active-search' ); for ( var i = 0; i < openedMobileMenus.length; i++ ) { var menuToggle = openedMobileMenus[i].querySelector( '.menu-toggle' ); if ( menuToggle && menuToggle.offsetParent === null ) { if ( openedMobileMenus[i].classList.contains( 'toggled' ) ) { var hamburgers = document.querySelectorAll(".hamburger"); for ( var h = 0; h < hamburgers.length; h++ ) { hamburgers[h].classList.remove("is-active"); } } } } } window.addEventListener( 'resize', checkHamburgers, false ); window.addEventListener( 'orientationchange', checkHamburgers, false ); </script> <?php } ); // BURGER MENU ICON ANIMATION ADDITION FOR OFF-CANVAS // ============================================================================= add_action( 'wp_enqueue_scripts', function() { $script = 'var slideoutToggles = document.querySelectorAll( ".slideout-toggle a" ), hamburgers = document.querySelectorAll( ".hamburger" ), closeElements = document.querySelectorAll( ".slideout-overlay, .slideout-exit" ); for ( var i = 0; i < slideoutToggles.length; i++ ) { slideoutToggles[i].addEventListener( "click", function( e ) { for ( var h = 0; h < hamburgers.length; h++ ) { if ( ! hamburgers[h].classList.contains( "is-active" ) ) { hamburgers[h].classList.add("is-active"); } } } ); }; for ( var e = 0; e < closeElements.length; e++ ) { closeElements[e].addEventListener( "click", function( e ) { for ( var h = 0; h < hamburgers.length; h++ ) { hamburgers[h].classList.remove("is-active"); }; } ); };'; wp_add_inline_script( 'generate-offside', $script ); } );November 21, 2022 at 8:00 pm #2426499Tom
Lead DeveloperLead DeveloperCould you try the below instead?:
// BURGER MENU ICON ANIMATION // ============================================================================= add_action( 'wp_footer', function() { ?> <script> var hamburgers = document.querySelectorAll(".hamburger"), menuToggles = document.querySelectorAll( '.menu-toggle' ), menuItems = document.querySelectorAll('nav ul li:not(.menu-item-has-children) > a'), htmlEl = document.documentElement; for ( var menuToggle = 0; menuToggle < menuItems.length; menuToggle++ ) { menuToggles[ menuToggle ].addEventListener("click", function() { for ( var h = 0; h < hamburgers.length; h++ ) { hamburgers[h].classList.toggle("is-active"); } } ); } for ( var menuItem = 0; menuItem < menuItems.length; menuItem++ ) { menuItems[ menuItem ].addEventListener( 'click', function( e ) { var closest_nav = this.closest( 'nav' ); if ( closest_nav.classList.contains( 'toggled' ) || htmlEl.classList.contains( 'slide-opened' ) ) { var url = this.getAttribute( 'href' ); var hash = url.split('#')[1]; // Open the sub-menu if the link has no destination if ( '#' === url ) { e.preventDefault(); for ( var h = 0; h < hamburgers.length; h++ ) { hamburgers[h].classList.toggle("is-active"); } } } }, false ); } var checkHamburgers = function() { var openedMobileMenus = document.querySelectorAll( '.toggled, .has-active-search' ); for ( var openedMobileMenu = 0; openedMobileMenu < openedMobileMenus.length; openedMobileMenu++ ) { var menuToggle = openedMobileMenus[ openedMobileMenu ].querySelector( '.menu-toggle' ); if ( menuToggle && menuToggle.offsetParent === null ) { if ( openedMobileMenus[ openedMobileMenu ].classList.contains( 'toggled' ) ) { var hamburgers = document.querySelectorAll(".hamburger"); for ( var h = 0; h < hamburgers.length; h++ ) { hamburgers[h].classList.remove("is-active"); } } } } } window.addEventListener( 'resize', checkHamburgers, false ); window.addEventListener( 'orientationchange', checkHamburgers, false ); </script> <?php } ); // BURGER MENU ICON ANIMATION ADDITION FOR OFF-CANVAS // ============================================================================= add_action( 'wp_enqueue_scripts', function() { $script = 'var slideoutToggles = document.querySelectorAll( ".slideout-toggle a" ), hamburgers = document.querySelectorAll( ".hamburger" ), closeElements = document.querySelectorAll( ".slideout-overlay, .slideout-exit" ); for ( var slideoutToggle = 0; slideoutToggle < slideoutToggles.length; slideoutToggle++ ) { slideoutToggles[ slideoutToggle ].addEventListener( "click", function( e ) { for ( var h = 0; h < hamburgers.length; h++ ) { if ( ! hamburgers[h].classList.contains( "is-active" ) ) { hamburgers[h].classList.add("is-active"); } } } ); }; for ( var e = 0; e < closeElements.length; e++ ) { closeElements[e].addEventListener( "click", function( e ) { for ( var h = 0; h < hamburgers.length; h++ ) { hamburgers[h].classList.remove("is-active"); }; } ); };'; wp_add_inline_script( 'generate-offside', $script ); } );November 22, 2022 at 1:37 am #2426776PxProd
hi tom,
that did it, thank you. 🙂
edit: sorry i was too fast. the animation is working now for sticky, but if you open the sidemenu and click outside to close it, the animation is not triggering back (like it did before).
November 22, 2022 at 8:03 pm #2428217Tom
Lead DeveloperLead DeveloperCan you re-share your URL so I can take a look?
Thanks!
November 25, 2022 at 3:58 am #2432711PxProd
hi tom,
sure, see attached below:
November 25, 2022 at 6:00 pm #2434818Tom
Lead DeveloperLead DeveloperCan you try the updated code here?: https://generatepress.com/forums/topic/animated-hamburger-problem/#post-2426499
November 28, 2022 at 2:37 am #2438521PxProd
hi tom,
that did it, thanks! 🙂
-
AuthorPosts
- You must be logged in to reply to this topic.