Чистая JavaScript анимация ослабление
Я пытался найти простую реализацию JavaScript на несколько часов, но не смог ее найти. Те, что приблизились, не имели никакого смысла. Все, что я мог найти, это куча функций ослабления без реализации.
Например, такие функции:
function linear(time, begin, change, duration) {
return change * time / duration + begin;
}
function easeInQuad(t) {
return t*t
},
function easeOutQuad(t) {
return t*(2-t)
},
Одна из вещей, которая беспокоит меня, - это когда fps приходит играть? Это напрямую связано с продолжительностью. Я не видел упоминаний об этом.
Как бы я реализовал вышеуказанные функции замедления в следующей анимации?
var box = document.getElementById("box");
var fps = 60;
var duration = 2; // seconds
var start = 0; // pixel
var finish = window.innerWidth - box.clientWidth;
var distance = finish - start;
var increment = distance / (duration * fps);
var position = start;
function move() {
position += increment;
if (position >= finish) {
clearInterval(handler);
box.style.left = finish + "px";
return;
}
box.style.left = position + "px";
}
var handler = setInterval(move, 1000 / fps);
body {
background: gainsboro;
}
#box {
width: 100px;
height: 100px;
background: white;
box-shadow: 1px 1px 1px rgba(0, 0, 0, .2);
position: absolute;
left: 0;
}
<div id="box"></div>