【发布时间】:2014-07-07 00:28:22
【问题描述】:
我用 jQuery 用 mouseenter/mouseleave 和 animate() 方法在一堆 div 上制作了一个动画,像纸牌一样组织起来。
当我将鼠标悬停在一个 div 上时,它向上移动了 20 像素。 到目前为止一切顺利。 但我的动画速度是线性的 (50)。
我想做的是我的动画持续时间等于悬停事件的持续时间。
这是我的html:
<section>
<div id="one"></div><!--
--><div id="two"></div><!--
--><div id="three"></div><!--
--><div id="four"></div><!--
--><div id="five"></div><!--
--><div id="six"></div>
</section>
CSS:
html, body{
margin:0;
padding:0;
}
section{
position:relative;
margin:0 auto;
width:400px;
height:400px;
}
div{
position:absolute;
display:inline-block;
width:200px;
height:200px;
top:150px;
background:black;
border:1px solid grey;
}
#one{
z-index:50;
left:0px;
}
#two{
z-index:49;
left:40px;
}
#three{
z-index:47;
left:80px;
}
#four{
z-index:46;
left:120px;
}
#five{
z-index:45;
left:160px;
}
#six{
z-index:44;
left:200px;
}
和 jQuery :
$(document).ready(function(){
$('div').on({
mouseenter: function(){
$(this).animate({
'top':'-=20px',
},50);
},
mouseleave:function(){
$(this).animate({
'top':'+=20px',
},50);
}
});
});
还有小提琴http://jsfiddle.net/Tender88/5FKUN/2/
我想我必须用动态包含 mouseenter 事件持续时间的变量替换当前速度,但我不知道如何检索该数据:(
非常感谢任何帮助。谢谢:)
【问题讨论】:
-
什么是悬停事件的持续时间?
-
但是在悬停期间,您不知道完全悬停事件的持续时间是多少。如果您尝试在悬停开始时启动动画,则不能将动画设置为您不知道的(悬停事件的)持续时间。仅供参考,
mouseenter事件没有持续时间。它发生在一个时间点。mouseleave事件也发生在单个时间点。如果您之前存储了mouseenter的时间,然后从之前保存的鼠标输入时间中减去当前时间,则可以在mouseleave事件发生时计算悬停的持续时间。 -
哎呀...回到绘图板!
标签: jquery animation dynamic duration mouseenter