UNPKG

@lancercomet/utils

Version:
44 lines (43 loc) 1.27 kB
/** * 获取页面滚动高度. * * @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 };