我正在尝试使用 JavaScript 构建一个滑块模块。一切正常,但动画是线性的,感觉不流畅或不自然。我曾想过连接一个缓动方程,但我不确定它的去向。
这是我从这里借来的动画功能:
function animate(elem, style, unit, from, to, time) {
if (!elem) return;
var start = new Date().getTime(),
timer = setInterval(function() {
var step = Math.min(1,(new Date().getTime()-start)/time);
elem.style[style] = (from+step*(to-from))+unit;
if (step == 1) clearInterval(timer);
},25);
elem.style[style] = from+unit;
}
以及来自这里的缓动功能:
/**
* @param {Number} t The current time
* @param {Number} b The start value
* @param {Number} c The change in value
* @param {Number} d The duration time
*/
function easeInCubic(t, b, c, d) {
t /= d;
return c*t*t*t + b;
}
我尝试只传递我已经拥有的值,如下所示:
elem.style[style] = easeInCubic(start, from, to, time) + unit;
但很明显,这是错误的(我的数学并不出色,我承认我只是在猜测)。
我如何将两者结合在一起?