UNPKG

@ohu-mobile/core

Version:
50 lines (49 loc) 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getClientHeight = getClientHeight; exports.getScrollHeight = getScrollHeight; exports.getScrollTop = getScrollTop; exports.getTopOffsetOfWrapperAndInner = getTopOffsetOfWrapperAndInner; exports.isElementSticky = isElementSticky; exports.reachBottom = reachBottom; function getScrollTop(element) { if (element === window) { return Math.max(window.scrollY || 0, document.documentElement.scrollTop); } return element.scrollTop; } function getClientHeight(element) { if (element === window) { return Math.max(document.documentElement.clientHeight, window.innerHeight); } return element.clientHeight; } function getScrollHeight(element) { return element.scrollHeight; } function getTopOffsetOfWrapperAndInner(wrapper, inner) { var top = 0; if (wrapper !== window) { var wrapperRect = wrapper.getBoundingClientRect(); top = wrapperRect.top; } var innerRect = inner.getBoundingClientRect(); return Math.abs(top - innerRect.top); } function isElementSticky(scroller, el) { var st = 0; if (scroller !== window) { st = scroller.getBoundingClientRect().top; } var _el$getBoundingClient = el.getBoundingClientRect(), bottom = _el$getBoundingClient.bottom; return bottom - st > 0; } function reachBottom(element) { var distance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var scrollElement = element === window ? document.body : element; var scrollHeight = getScrollHeight(scrollElement); return scrollHeight - (getClientHeight(element) + getScrollTop(element)) <= distance; }