Skip to content

Instantly share code, notes, and snippets.

@Kulbear
Created May 10, 2017 15:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Kulbear/55eb35d72d8de5907c65310051f1121d to your computer and use it in GitHub Desktop.
Save Kulbear/55eb35d72d8de5907c65310051f1121d to your computer and use it in GitHub Desktop.
GoTop
function goTop (acc, t) {
const acceleration = acc || 0.1
const time = t || 16
const document = window.document
let x1 = 0
let y1 = 0
let x2 = 0
let y2 = 0
if (document.documentElement) {
x1 = document.documentElement.scrollLeft || 0;
y1 = document.documentElement.scrollTop || 0;
}
if (document.body) {
x2 = document.body.scrollLeft || 0;
y2 = document.body.scrollTop || 0;
}
const x3 = window.scrollX || 0;
const y3 = window.scrollY || 0;
// 滚动条到页面顶部的水平距离
const x = Math.max(x1, Math.max(x2, x3));
// 滚动条到页面顶部的垂直距离
const y = Math.max(y1, Math.max(y2, y3));
// 滚动距离 = 目前距离 / 速度, 因为距离原来越小, 速度是大于 1 的数, 所以滚动距离会越来越小
const speed = 1 + acceleration;
window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
// 如果距离不为零, 继续调用迭代本函数
if(x > 0 || y > 0) {
window.setTimeout(goTop, time);
}
return
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment