当我的AppBorder
元素悬停时,隐藏的AppMenu
会出现在右侧。但是一旦我徘徊,AppMenu
会快速下降AppBorder
,然后才会消失。如何摆脱那种奇怪的后遗症,以便AppMenu
在悬停时消失,而不是在我的主要元素下方?
答案 0 :(得分:1)
这是因为您正在使用CSS :hover
来更改父级的宽度,而父级的宽度不会与创建条带的jquery同时触发右边完全淡入淡出。将工作精细淡入,但当你取消 - :hover
元素时,在完全移除右边的条带之前立即移除新宽度,导致它向下移动,因为没有足够的水平空间它显示在右边。
您不需要宽度,但您可以使用display: flex
(或者我使用display: inline-flex
,因为您float
最初编辑了该元素)并且他们&# 39; ll并排布局,似乎表现得像预期的那样。
$(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>
&#13;