我最近贴了一篇关于悬停效果的文章。
它现在工作正常,但我想知道是否有一种方法来优先效果。例如,如果用户通过一系列的图像滚动快速它需要一段时间的动画赶上。我不介意动画继续,但我希望目前正在悬停的项目,以淡入立即。
下面是我的代码:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
<title>Robs Test</title>
<style>
body{background:gray;}
div{position:relative;}
.box{
position:relative;
width:150px;
height:150px;
float:left;
display:block;
background:black;
margin-right:20px;
}
.boxover{
position:absolute;
top:10px;
left:0px;
width:100%;
height:20px;
z-index:100;
background:white;
display:none;
}
</style>
<script type="text/javascript">
$(function(){
$('.box').hover(over, out);
});
function over(event){
var over_id = '#box_over_' + $(this).attr('id').replace('over_','');
$(over_id).fadeIn(400);
$(over_id).css("display","normal");
}
function out(event) {
var over_id = '#box_over_' + $(this).attr('id').replace('over_','');
$(over_id).fadeOut(400);
}
</script>
</head>
<body>
<a href="#" class="box" id="over_1"><img src="pier.jpg" alt="test" width="150" height="150" /><div id="box_over_1" class="boxover">hello</div></a>
<a href="#" class="box" id="over_2"><img src="pier.jpg" alt="test" width="150" height="150" /><div id="box_over_2" class="boxover">there</div></a>
<a href="#" class="box" id="over_3"><img src="pier.jpg" alt="test" width="150" height="150" /><div id="box_over_3" class="boxover">rob</div></a>
</body>
</html>
我可以做些什么来使悬停在上面的div优先于其他div吗?这样我就不必等到动画完成。
干杯
罗伯
4条答案
按热度按时间lndjwyie1#
你可以在jQuery中使用stop函数来做得更好。它会停止正在进行的动画。
jdgnovmf2#
我只会触发动画(* 特别是如果他们很长 ),如果用户悬停在图像上设置阈值的时间( 不是在每个翻转 *)。
请参阅实现controlled hover的相关帖子。
smdncfj33#
与@SliverNinja链接的内容相关,特别是针对您的场景:
小提琴在这里:http://jsfiddle.net/9RR93/
rta7y2nd4#
如果你想全力以赴,你可以使用jquery动画为对象建立自己的优先级队列系统,然后每当一个新的动画开始时,你可以检查队列,看看是否有一个现有的动画需要停止(如果其优先级较低),或者如果新的动画不应该开始(由于一个更高优先级的动画已经在队列中运行)。刚刚写了这在过去的10分钟,所以,检查错误哈哈