javascript - jQuery: Hidden element shifts downward on hover out? -
when appborder element hovered over, hidden appmenu appears on right. once hover out, appmenu quick drop below appborder before disappears. how rid of weird after-effect appmenu disappears on hover out instead of plopping below main element?
it's because you're using css :hover change width of parent, doesn't fire @ same time the jquery makes strip on right fade in , out completely. work fine fading in, when un-:hover element, removes new width before strip on right removed, causing shift below since there isn't enough horizontal space display right.
you don't need widths though, can use display: flex (or used display: inline-flex since floated element originally) on parent , they'll lay out side-by-side, , seems behave expected.
$(function(){ $('.appborder').hover(function(){ var menuid = $(this).attr('data-menuid'); $('#'+menuid).stop(false, true).fadetoggle('fast'); }); }); .appborder { border: 1px solid #898989; display: inline-flex; margin: 10px 7px 10px 7px; } .appborder:hover { cursor: pointer; } .appimg { width: 70px; height:70px; margin: 3px 0px 0px 3px; } #text { width: 80px; height: 16px; float: left; font-family: trebuchet ms, helvetica, sans-serif; font-size: 13px; font-weight: 500; text-align: center; padding: 5px 0px 5px 0px; } .appmenu { display: none; } .iconborder, .icon4border { border: 1px solid #b7b7b7; border-top: none; border-right: none; width:26px; height: 18px; text-align: center; padding: 4px 0px 2px 0px; } .icon4border { border-bottom: none; } .icon { width: 17px; height: 17px; } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <div class="appborder" data-menuid="menu1"> <div id="iconandtext"> <div><img src="i/app1.png" class="appimg"></div> <div id="text">text</div> </div> <div class="appmenu" id="menu1"> <div class="iconborder"><img src="#" class="icon"></div> <div class="iconborder"><img src="#" class="icon"></div> <div class="iconborder"><img src="#" class="icon"></div> <div class="icon4border"><img src="#" class="icon"></div> </div> </div>
Comments
Post a Comment