Site logo

Archived topic

Ease-in transition for mobile "Hamburger" dropdown menu

8 replies · Started by john770 on October 10, 2017

Viewing posts 1–9 of 9

Hi there,

My GP navigation with the mobile Hamburger dropdown menu works great, but unfortunately without an elegant ease-in transition as seen on many sites, e.g., here:

https://divi.space/
(mobile view, elegant ease-in transition when clicking/tapping the hamburger icon)

What I found in the GP documentation does not really fit my use case.
https://docs.generatepress.com/article/navigation-dropdown/#dropdown-menu-transition

It would be nice if you or anybody else here in the forum could help me with some fitting code snippet.

CSS transition preferred, but other solutions also welcome. :)
Thanks!

Hi there,

That's intentional, as people typically want instant results on mobile as opposed to transitions.

Should be possible though - can you link me to your site?

Hi Tom,

I am currently only testing on XAMPP, so I can't link you to a live site. Just wanted to thank you swiftly for your answer, since, unfortunately, I haven't got enough time for a detailed answer right now, but I will come back tomorrow.

Hi Tom,

That’s intentional, as people typically want instant results on mobile as opposed to transitions.

That's a good reason, for sure, and I also try to avoid transitions and animations that are bad for the site's performance and for user experience.

OTOH, you are using the elegant slide-in navigation for mobile view on this very site, and I wonder if the same effect or a similar one would be possible for the (IMHO not so elegant) mobile *drop-down* menu.

FYI, in mobile view, my site in progress (on XAMPP) has the "navigation logo" on the left and the Hamburger icon on the right-hand side (display:inline-block and float:right).

Here's the HTML, in case you should like to see it:


<nav>
<div class="inside-navigation grid-container grid-parent">
	<div class="site-logo sticky-logo navigation-logo">
		<a href="http://localhost/mysite/" title="mysite" rel="home">
			<img class="header-image" src="http://localhost/mysite/wp-content/uploads/2017/09/logo-mysite.png" alt="mysite">
		</a>
	</div>
		<button class="menu-toggle" aria-controls="primary-menu" aria-expanded="true">
			<span class="mobile-menu">Menu</span>
		</button>
	<div id="primary-menu" class="main-nav">
		<ul id="menu-main-menu" class=" menu sf-menu">
		...
		</ul>
	</div>
</div><!-- .inside-navigation -->
</nav>

I had started with the mobile slide-in navigation, but changed to the drop-down menu after the menu items in the slide-in navigation were scrambled. This being the only thing that didn't work so far with this great theme, I tried again after your above answer and got it working now – I had only enabled it in the Customizer, but had forgotten to additionally check "Slideout Menu" as the Display Location in the Menu Settings. :)

But, if you happen to know a way to give the mobile drop-down menu a similar transition as the one of the slide-in navigation, it would be great to learn about it and have *two* elegant mobile menus at hand.
Thanks a lot for your help!

Doing something like this should work:

@media (max-width: 768px) {
    .main-navigation .main-nav > ul {
        display: block;
        max-height: 0;
        overflow: hidden;
        transition: max-height 100ms ease-in-out;
    }

    .main-navigation.toggled .main-nav > ul {
        max-height: 1000px;
        transition: max-height 400ms ease-in-out;
    }
}

Let me know :)

Wow, brilliant, thank you so much! :)
The only thing I had to add (latest Firefox) was width: 100% for the first declaration, since without it the menu items were half-covered and started at the height of the logo. Very nice, now I have the choice between two elegant mobile menus, thanks a lot again!

BTW: One of the many things I really like about your theme is that I go to NU HTML Checker and the result is "Document checking completed. No errors or warnings to show." Then on to the W3C CSS Validator and the result is "Congratulations! No Error Found".* Try that with any of the big multi-purpose themes at ThemeForest or elsewhere...
*Only exception are blog pages with comments: No errors indicated, but for every single article class="comment-body" there is an (unjustified) warning: "Warning: Article lacks heading. Consider using h2-h6 elements to add identifying headings to all articles", which doesn't make any sense at all in the comment body context, does it? :)

Awesome, glad I could help!

Thank you! I take the quality of code very seriously. Interesting about the comments - I'll do some research on that :)

Hi team, I have attempted to apply the CSS to function with my mobile menu slide-down.

The code works fine for the animation in & out for the main nav, however it only does the animation for toggled-on for the sub menu items.

How do I modify the CSS to get the sub menu animation for when it is toggled-off?

/* Mobile menu */

@media (max-width: 768px) {
 .main-navigation .menu {
     background-color: var(--base-3);
     height: calc(100vh - 56px); 
}

.mobile-menu-open body {
     overflow: hidden;
}

#mobile-header.toggled .main-nav>ul {
     height: calc(100vh - 56px);
     overflow: auto !important;
     padding-bottom: 50px;
} 
    }

/* mobile menu slideout animation */

@media (max-width: 768px) {
  
 #mobile-header .main-nav > ul,
 #mobile-header .main-nav .sub-menu {
      display: block;
      max-height: 0;
      width: 100%;
      overflow: hidden;
      transition: max-height 400ms ease-in-out, opacity 0s ease-in-out;
      opacity: 0;
      overflow: hidden;
    }

 #mobile-header.toggled .main-nav > ul,
 #mobile-header .main-nav .sub-menu.toggled-on {
      display: block !important;
      max-height: 1000px;
      width: 100%;
      transition: max-height 600ms ease-in-out, opacity 600ms ease-in-out;
      opacity: 1;
      overflow: hidden;
    }

Hi there,

this is a real old topic, do you want to raise a new one where you can share a link to your site so i can take a look ?

This archived topic is closed to new replies.