UNPKG

@oceanbase/ui

Version:

The UI library based on OceanBase Design

80 lines (79 loc) 2.34 kB
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'; };