【问题标题】:Can speed be defined instead of duration for jQuery animations?可以为 jQuery 动画定义速度而不是持续时间吗?
【发布时间】:2015-01-06 02:30:16
【问题描述】:

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

【问题讨论】:

  • 例如,您可以计算元素将移动的距离,并使用它来确定动画的长度。不幸的是,没有本地方法来确定动画的“速度”或“速率”。
  • @Terry 我想你的意思是“有 no 原生方式”。
  • @AlexanderO'Mara 确实如此。凌晨 3.34 点记录了脑放屁;)谢谢!

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


【解决方案1】:

由于jQuery动画只接受时间,你可以计算时间给你一个具体的速度:

time = pixels / desired pixels per second

所以,如果动画覆盖 200px 并且期望的速度是 100px / sec,那么你只需计算:

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

如果动画覆盖 40 像素,那么您将拥有:

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

您还可以使用animate(properties, options) 的这种形式为您制作自己的 jQuery animate 版本:

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

val 是您愿意使用的任何单位(像素可能是最常见的),rate 是单位/秒。

【讨论】:

  • 当然,对于“线性”以外的任何整形,速度都是平均值。
  • @Roamer-1888 - 是的。如果 OP 想要一个真正恒定的速度,他们应该选择“线性”缓动函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-22
  • 1970-01-01
  • 2012-01-25
  • 2018-11-12
  • 2011-03-16
  • 2021-11-19
相关资源
最近更新 更多