0

我很难理解这是如何工作的。我已阅读 robert penners 网站上的教程,其中解释了不同的参数:

t:时间 b:起始值 c:更改 d:持续时间

我已经指定了值,但它似乎不起作用,这是为什么呢?我似乎没有得到弹性效果,但更多的是在一开始的某个地方停下来。

https://jsfiddle.net/m1qzqvu8/4/

var elem = document.getElementsByTagName('div')[0]

function fn(){
  var x = parseInt(elem.style.left);
  if(x < 200) {
    x += easeOutElastic(0, 10, 100, 4)
    elem.style.left = x + "px"
  }
    requestAnimationFrame(fn)
}

fn()

function easeOutElastic (t, b, c, d) {
        var s=1.70158;var p=0;var a=c;
        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
        if (a < Math.abs(c)) { a=c; var s=p/4; }
        else var s = p/(2*Math.PI) * Math.asin (c/a);
        return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
    }
4

0 回答 0