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

可以为jQuery动画定义速度而不是持续时间吗?,jquery,jquery-animate,jquery-easing,custom-scrolling,Jquery,Jquery Animate,Jquery Easing,Custom Scrolling,我知道这个位置取决于动态值。可以理解的是,较短距离的动画应该设置得更快,但具有相同的加速度(速度)。然而,在jquery文档中,我只看到了一种定义持续时间的方法,这种方法对很多事情都适用,但对其他事情则不适用。我如何定义速度,所以若值很小,持续时间也很小,若值很长,则持续时间很长。谢谢。由于jQuery动画只接受一个时间,您可以计算时间以获得特定的速度: time = pixels / desired pixels per second 因此,如果动画覆盖200px且所需速度为100px/秒,

我知道这个位置取决于动态值。可以理解的是,较短距离的动画应该设置得更快,但具有相同的加速度(速度)。然而,在jquery文档中,我只看到了一种定义持续时间的方法,这种方法对很多事情都适用,但对其他事情则不适用。我如何定义速度,所以若值很小,持续时间也很小,若值很长,则持续时间很长。谢谢。

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

time = pixels / desired pixels per second
因此,如果动画覆盖200px且所需速度为100px/秒,则只需计算:

time = 200px / 100 px per sec = 2 sec = 2000ms
如果动画覆盖40px,则您将拥有:

time = 40px / 100 px per sec = 0.4 sec = 400ms
您还可以使用以下形式的
animate(属性、选项)
,制作自己版本的jQuery animate:


其中,
val
以您想要使用的任何单位(像素可能是最常见的)表示,
rate
以单位/秒表示。

例如,您可以计算元素移动的距离,并使用该距离来确定动画的长度。不幸的是,没有本土的方式来决定动画的“速度”或“速率”。@Terry我想你的意思是“没有本土的方式”。@AlexanderO'Mara确实如此。凌晨3时34分录得脑放屁;)谢谢当然,对于“线性”以外的任何形状,速度都是平均值。@Roamer-1888-是的。如果OP想要一个真正恒定的速度,他们应该选择“线性”缓和函数。
jQuery.fn.speedAnimate = function(properties, options, val, rate) {
    options.duration = (val / rate) * 1000;
    return this.animate(properties, options);
}