| 对比新文件 |
| | |
| | | Math.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
|
| | | }
|
| | |
|
| | | // requestAnimationFrame for Smart Animating http://goo.gl/sx5sts
|
| | | var requestAnimFrame = (function() {
|
| | | return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60) }
|
| | | })()
|
| | |
|
| | | /**
|
| | | * Because it's so fucking difficult to detect the scrolling element, just move them all
|
| | | * @param {number} amount
|
| | | */
|
| | | function move(amount) {
|
| | | document.documentElement.scrollTop = amount
|
| | | document.body.parentNode.scrollTop = amount
|
| | | document.body.scrollTop = amount
|
| | | }
|
| | |
|
| | | function position() {
|
| | | return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop
|
| | | }
|
| | |
|
| | | /**
|
| | | * @param {number} to
|
| | | * @param {number} duration
|
| | | * @param {Function} callback
|
| | | */
|
| | | export function scrollTo(to, duration, callback) {
|
| | | const start = position()
|
| | | const change = to - start
|
| | | const increment = 20
|
| | | let currentTime = 0
|
| | | duration = (typeof (duration) === 'undefined') ? 500 : duration
|
| | | var animateScroll = function() {
|
| | | // increment the time
|
| | | currentTime += increment
|
| | | // find the value with the quadratic in-out easing function
|
| | | var val = Math.easeInOutQuad(currentTime, start, change, duration)
|
| | | // move the document.body
|
| | | move(val)
|
| | | // do the animation unless its over
|
| | | if (currentTime < duration) {
|
| | | requestAnimFrame(animateScroll)
|
| | | } else {
|
| | | if (callback && typeof (callback) === 'function') {
|
| | | // the animation is done so lets callback
|
| | | callback()
|
| | | }
|
| | | }
|
| | | }
|
| | | animateScroll()
|
| | | }
|