CSS dropdown menu fading in improperly -


having bit of strange problem setting fade in drop down menu - here's css it:

.main-navigation li ul li {   opacity:0;   transition:opacity 0.3s linear;   -webkit-transition:opacity 0.3s linear;   -moz-transition:opacity 0.3s linear;   -o-transition:opacity 0.3s linear;  }  .main-navigation li:hover > ul li {       opacity:1;  } 

and html (as generated through wp):

<nav id="site-navigation" class="main-navigation" role="navigation">             <h3 class="menu-toggle">menu</h3>             <a class="assistive-text" href="#content" title="skip content">skip content</a>             <div class="menu-nav-container"><ul id="menu-nav" class="nav-menu"><li id="menu-item-23" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-10 current_page_item menu-item-23"></li> <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"></li> <li id="menu-item-24" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-24"> <ul class="sub-menu">     <li id="menu-item-48" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48"></li>     <li id="menu-item-47" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-47"></li>     <li id="menu-item-69" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-69"></li> </ul> </li> <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-27"> <ul class="sub-menu">     <li id="menu-item-66" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-66"></li>     <li id="menu-item-65" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-65"></li>     <li id="menu-item-64" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-64"></li> </ul> </li> <li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-28"> <ul class="sub-menu">     <li id="menu-item-63" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-63"></li>     <li id="menu-item-62" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-62"></li>     <li id="menu-item-61" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-61"></li> </ul> </li> </ul></div> 

the sublists fade in when scroll on list item, problem this: fade in when scroll on area be. can't seem solve - have ideas?

thanks!

elements have opacity set 0 still occupy space on page (unless position them or float them), , when hover on sub nav, hovering on parent <li> causing animation run.

there's trick using visibility: hidden , position: absolute fix this. added bonus, because visibility property allows use of transitions (display doesn't) can make smooth fade out effect fade in setting delay.

i'd set styles on sub nav <ul> rather sub nav <li>s.

.main-navigation li ul {    position: absolute; /* take out of document flow */   visibility:hidden;   opacity:0;   transition:visibility 0s linear 0.3s, opacity 0.3s linear; }  .main-navigation li:hover > ul {    visibility:visible;   opacity:1;   transition-delay:0s; } 

the visibility transition delay matches length of opacity transition length means when stop hovering, visibility won't happen until opacity finished animating.

demo


Comments