@ohu-mobile/core
Version:
50 lines (49 loc) • 1.65 kB
JavaScript
;
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;
}