jQuery:隐藏元素在悬停时向下移动?

时间:2017-04-08 00:20:51

标签: javascript jquery html css hover

当我的AppBorder元素悬停时,隐藏的AppMenu会出现在右侧。但是一旦我徘徊,AppMenu会快速下降AppBorder,然后才会消失。如何摆脱那种奇怪的后遗症,以便AppMenu在悬停时消失,而不是在我的主要元素下方?

1 个答案:

答案 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;
&#13;
&#13;