scrollto-with-animation
Version:
Animated scroll with requestAnimationFrame. For smooth animate scrollTo defining the easing, running at 60FPS and cross-browser
101 lines (100 loc) • 2.52 kB
JavaScript
export default {
linearTween: function (t, b, c, d) {
return c * t / d + b
},
easeInQuad: function (t, b, c, d) {
t /= d
return c * t * t + b
},
easeOutQuad: function (t, b, c, d) {
t /= d
return -c * t * (t - 2) + b
},
easeInOutQuad: function (t, b, c, d) {
t /= d / 2
if (t < 1) return c / 2 * t * t + b
t--
return -c / 2 * (t * (t - 2) - 1) + b
},
easeInCubic: function (t, b, c, d) {
t /= d
return c * t * t * t + b
},
easeOutCubic: function (t, b, c, d) {
t /= d
t--
return c * (t * t * t + 1) + b
},
easeInOutCubic: function (t, b, c, d) {
t /= d / 2
if (t < 1) return c / 2 * t * t * t + b
t -= 2
return c / 2 * (t * t * t + 2) + b
},
easeInQuart: function (t, b, c, d) {
t /= d
return c * t * t * t * t + b
},
easeOutQuart: function (t, b, c, d) {
t /= d
t--
return -c * (t * t * t * t - 1) + b
},
easeInOutQuart: function (t, b, c, d) {
t /= d / 2
if (t < 1) return c / 2 * t * t * t * t + b
t -= 2
return -c / 2 * (t * t * t * t - 2) + b
},
easeInQuint: function (t, b, c, d) {
t /= d
return c * t * t * t * t * t + b
},
easeOutQuint: function (t, b, c, d) {
t /= d
t--
return c * (t * t * t * t * t + 1) + b
},
easeInOutQuint: function (t, b, c, d) {
t /= d / 2
if (t < 1) return c / 2 * t * t * t * t * t + b
t -= 2
return c / 2 * (t * t * t * t * t + 2) + b
},
easeInSine: function (t, b, c, d) {
return -c * Math.cos(t / d * (Math.PI / 2)) + c + b
},
easeOutSine: function (t, b, c, d) {
return c * Math.sin(t / d * (Math.PI / 2)) + b
},
easeInOutSine: function (t, b, c, d) {
return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b
},
easeInExpo: function (t, b, c, d) {
return c * Math.pow(2, 10 * (t / d - 1)) + b
},
easeOutExpo: function (t, b, c, d) {
return c * (-Math.pow(2, -10 * t / d) + 1) + b
},
easeInOutExpo: function (t, b, c, d) {
t /= d / 2
if (t < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b
t--
return c / 2 * (-Math.pow(2, -10 * t) + 2) + b
},
easeInCirc: function (t, b, c, d) {
t /= d
return -c * (Math.sqrt(1 - t * t) - 1) + b
},
easeOutCirc: function (t, b, c, d) {
t /= d
t--
return c * Math.sqrt(1 - t * t) + b
},
easeInOutCirc: function (t, b, c, d) {
t /= d / 2
if (t < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b
t -= 2
return c / 2 * (Math.sqrt(1 - t * t) + 1) + b
}
}