@lancercomet/utils
Version:
My personal utils lib.
44 lines (43 loc) • 1.27 kB
JavaScript
/**
* 获取页面滚动高度.
*
* @return {number}
*/
function getScrollTop() {
return document.documentElement.scrollTop ||
document.body.scrollTop ||
window.pageYOffset;
}
/**
* 以动画效果滚动 Y 轴.
*
* @param {[number = 0]} y 滚动至目标位置,默认为 0.
*/
function scrollYWithAnimation(y) {
if (y === void 0) { y = 0; }
var scrollTop = getScrollTop();
var delta = y - scrollTop;
var target = scrollTop + delta * 0.4;
var reachedTarget = Math.abs(y - target) < 30;
var reachedEnd = target + window.innerHeight >= (document.documentElement.scrollHeight || document.body.scrollHeight);
if (reachedTarget || reachedEnd) {
target = y;
}
window.scrollTo(0, target);
if (target !== y) {
requestAnimationFrame(function () { return scrollYWithAnimation(y); });
}
}
/**
* 检查是否滚动到了顶部.
*/
function checkIsReachTop(element) {
return element.scrollTop <= 0;
}
/**
* 检查是否滚动到了底部.
*/
function checkIsReachBottom(element) {
return element.scrollHeight - element.scrollTop <= element.offsetHeight;
}
export { getScrollTop, scrollYWithAnimation, checkIsReachTop, checkIsReachBottom };