在动画开始之前更新animate属性

Update animate property before animation start

本文关键字:更新 animate 属性 动画 开始      更新时间:2023-09-26

我正在使用jquery animate对一个元素执行以下动画。距离值在动画开始前更改,因此我希望更新动画特性值。我该怎么做?我使用了start回调函数,如图所示,但它不会更新动画。

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

我找到了如何动态更新动画属性的答案。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);
         }
  }
})

当第一个步骤启动时,我会更改道具值,然后忽略其余步骤。感谢每一位帮助过我的人!:)