动画开始前更新动画属性

时间:2016-03-29 06:36:24

标签: javascript jquery animation

我正在使用jquery animate对元素执行以下动画。在动画启动之前距离值会发生变化,因此我想更新animate属性值。我怎样才能做到这一点?我使用了start回调函数,但它没有更新动画。

el.delay(delay).animate({
     top: -distance
},{
     duration:700,
     start:function(e){
         e.props.top = -($(e.elem).offset().top  - $(".navigation").offset().top);
}
})

1 个答案:

答案 0 :(得分:0)

我能够找到关于如何动态更新动画版的答案。 start是一个回调函数,它在动画开始时被触发但是对props对象的修改没有反映在动画中!为此,step回调是理想的,它让我们在每个动画步骤中更改fx对象。以下是我想出的解决方案。

el.delay(delay).animate({
     top: -distance + 'px'
},{
     duration:700,
     step:function(now,fx){
         if(now == 0){
             fx.end = -($(fx.elem).offset().top  - $(".navigation").offset().top);
         }
  }
})

我在第一步被触发时改变了prop值,之后我忽略了其余的步骤。谢谢每一位帮助过我的人! :)