可以定义速度而不是jQuery动画的持续时间吗?

时间:2015-01-06 02:30:16

标签: jquery jquery-animate jquery-easing custom-scrolling

我的这个位置依赖于动态价值。有意义的是,较短的距离应该更快地动画,但具有相同的加速度(速度)的外观。但是,在jquery文档中,我只看到了一种定义持续时间的方法,这对很多事情都是好的,但对其他事情则没有。如何定义速度,如果值很小,持续时间也很小,如果值很长则持续时间很长。感谢。

1 个答案:

答案 0 :(得分:2)

由于jQuery动画只接受一个时间,因此您可以计算给出特定速度的时间:

time = pixels / desired pixels per second

因此,如果动画覆盖200px且所需速度为100px / sec,那么您只需计算:

time = 200px / 100 px per sec = 2 sec = 2000ms

如果动画覆盖40px,那么你将拥有:

time = 40px / 100 px per sec = 0.4 sec = 400ms

你也可以使用animate(properties, options)这种形式制作你自己的jQuery动画版本,这对你有用:

jQuery.fn.speedAnimate = function(properties, options, val, rate) {
    options.duration = (val / rate) * 1000;
    return this.animate(properties, options);
}

val位于您关注的任何单位(像素可能最常见)和rate单位/秒。