春季宽松重新打造弹跳缓和

eas*_*wee 5 javascript bounce easing-functions velocity.js

通过velocity.js更改日志,我读到:

... 2)背部,弹跳和弹性缓和已被移除.请改用弹簧物理....

我想知道是否有任何简单的方法来重新创建easeOutBounce使用spring缓动的jQuery动画可用的效果,它接受自定义参数?

默认情况下,您可以使用以下spring缓动:

$('.ball').velocity({ top: ['200px', 'spring']}, { duration: 2000 });
Run Code Online (Sandbox Code Playgroud)

可以通过指定[tension, friction]而不是仅传递缓动关键字来自定义弹簧缓动spring.所以你可以这样做:

$('.ball').velocity({ top: ['200px', [500, 0]]}, { duration: 2000 });
Run Code Online (Sandbox Code Playgroud)

我无法理解使用哪种摩擦力和张力值来实现easeOutBounce缓和.我试图让球在达到200px时反弹 - 但它反而是一个"松散"的弹簧,低于地线而不是弹跳.

这是否可以通过velocity.js以简单的方式完成,所以我不需要自己实现自定义缓动函数?

$('button').on('click', function(){
   $('.ball').css('top', '120px');
   $('.ball').velocity({ top: ['200px', [500, 0]]}, { duration: 2000 });
});
Run Code Online (Sandbox Code Playgroud)
.display {
  width: 240px;
  height: 280px;
  position: relative;
  border: 1px solid #000;
}
.ball {
  position: absolute;
  top: 120px;
  left: 40px;
  width: 20px;
  height: 20px;
}
.ball:after {
  content: "";
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 100%;
  background: red;
}
.ground {
  position: absolute;
  top: 220px;
  left: 0;
  width: 100%;
  height: 1px;
  background: black;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/velocity/1.1.0/velocity.min.js"></script>

<button>Throw ball</button>
<div class="display">
  <div class="ball"></div>
  <div class="ground"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

yda*_*niv 2

作为帮助在 Velocity 中创建缓动的人,我知道用它创建弹跳和弹性缓动是不可能的。但如果你问 Julian(Velocity 的创建者),他可能会说弹簧缓动比反弹更好。

话虽如此,您最好的选择是自己在 Velocity 上注册这些缓动。查看该线程底部的解释。

  • 感谢您提供的信息 - 这正是我最终所做的 - 使用 jQuery UI 弹跳并将其扩展为速度。我只是感到困惑,因为更改日志有点像弹簧一样用自定义参数替代了反弹效果 - 但事实并非如此,因为物理原理不同。 (3认同)