swan-ui
Version:
Vue Components for Mobile App.
84 lines (73 loc) • 2.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.warning = warning;
exports.getClientHeight = getClientHeight;
exports.getClientWidth = getClientWidth;
exports.getWindowScrollTop = getWindowScrollTop;
exports.getWindowScrollLeft = getWindowScrollLeft;
exports.getOffsetTop = getOffsetTop;
exports.getOffset = getOffset;
exports.isElemOutViewport = isElemOutViewport;
function warning(format) {
var _len = arguments.length;
var args = Array(_len > 1 ? _len - 1 : 0);
for (var _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
if (format === undefined) {
throw new Error('`warning(format, ...args)` requires a warning ' + 'message argument');
}
var argIndex = 0;
var message = 'Warning: ' + format.replace(/%s/g, function () {
return args[argIndex++];
});
if (typeof console !== 'undefined') {
console.warn(message);
}
}
function getClientHeight() {
return window.innerHeight ? window.innerHeight : document.compatMode === 'BackCompat' ? document.body.clientHeight : document.documentElement.clientHeight;
}
function getClientWidth() {
return window.innerWidth ? window.innerWidth : document.compatMode === 'BackCompat' ? document.body.clientWidth : document.documentElement.clientWidth;
}
function getWindowScrollTop() {
return window.pageYOffset ? window.pageYOffset : document.compatMode === 'BackCompat' ? document.body.scrollTop : document.documentElement.scrollTop;
}
function getWindowScrollLeft() {
return window.pageXOffset ? window.pageXOffset : document.compatMode === 'BackCompat' ? document.body.scrollLeft : document.documentElement.scrollLeft;
}
function getOffsetTop(elem) {
var offsetTop = 0;
if (elem.offsetParent) {
do {
offsetTop += elem.offsetTop;
elem = elem.offsetParent;
} while (elem);
}
return offsetTop >= 0 ? offsetTop : 0;
}
function getOffset(elem) {
var offsetTop = 0;
var offsetLeft = 0;
if (elem.offsetParent) {
do {
offsetTop += elem.offsetTop;
offsetLeft += elem.offsetLeft;
elem = elem.offsetParent;
} while (elem);
}
return {
offsetTop: offsetTop >= 0 ? offsetTop : 0,
offsetLeft: offsetLeft >= 0 ? offsetLeft : 0
};
}
function isElemOutViewport(elem) {
var bodyScrollTop = getWindowScrollTop();
var elemOffsetTop = getOffsetTop(elem);
var elemHeight = elem.offsetHeight;
var clientHeight = getClientHeight();
return elemOffsetTop <= bodyScrollTop + elemHeight || clientHeight + bodyScrollTop <= elemOffsetTop + elemHeight;
}