@oceanbase/ui
Version:
The UI library based on OceanBase Design
80 lines (79 loc) • 2.34 kB
JavaScript
export var getScrollOffsets = function getScrollOffsets(dom) {
if (window.pageXOffset != null) {
return {
x: window.pageXOffset,
y: window.pageYOffset
};
}
if (dom) {
return {
x: dom.scrollLeft,
y: dom.scrollTop
};
}
// For IE (or any browser) in Standards mode
var _window = window,
document = _window.document;
if (document.compatMode === 'CSS1Compat') {
return {
x: document.documentElement.scrollLeft,
y: document.documentElement.scrollTop
};
}
return {
x: document.body.scrollLeft,
y: document.body.scrollTop
};
};
export var getClientHeight = function getClientHeight(dom) {
if (dom) {
return dom.clientHeight;
}
return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
};
export var getClientWidth = function getClientWidth(dom) {
if (dom) {
return dom.clientWidth;
}
if (window.innerWidth) {
return window.innerWidth;
}
return document.body.clientWidth;
};
var cached;
export var getScrollBarSize = function getScrollBarSize(fresh) {
var dom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;
if (window.innerWidth > dom.offsetWidth) {
if (fresh || cached === undefined) {
var inner = document.createElement('div');
inner.style.width = '100%';
inner.style.height = '200px';
var outer = document.createElement('div');
var outerStyle = outer.style;
outerStyle.position = 'absolute';
outerStyle.top = '0';
outerStyle.left = '0';
outerStyle.pointerEvents = 'none';
outerStyle.visibility = 'hidden';
outerStyle.width = '200px';
outerStyle.height = '150px';
outerStyle.overflow = 'hidden';
outer.appendChild(inner);
dom.appendChild(outer);
var widthContained = inner.offsetWidth;
outer.style.overflow = 'scroll';
var widthScroll = inner.offsetWidth;
if (widthContained === widthScroll) {
widthScroll = outer.clientWidth;
}
dom.removeChild(outer);
cached = widthContained - widthScroll;
}
return cached;
}
return 0;
};
export var isFixedElem = function isFixedElem(element) {
var style = element && window.getComputedStyle(element);
return style && style.position === 'fixed';
};