xdesign-vue-next
Version:
XDesign Component for vue-next
51 lines (47 loc) • 1.66 kB
JavaScript
/**
* xdesign v1.0.6
* (c) 2023 xdesign
* @license MIT
*/
import { getWindowScroll, getElmCssPropValue, isFixed } from '../../utils/dom.mjs';
import '../../_chunks/dep-10a947a6.mjs';
import '../../_chunks/dep-11fa9c2c.mjs';
import '../../_chunks/dep-b75d8d74.mjs';
import '../../_chunks/dep-82805301.mjs';
import '../../_chunks/dep-a95026f2.mjs';
import '../../_chunks/dep-068e912d.mjs';
import '../../_chunks/dep-addc2a84.mjs';
import '../../_chunks/dep-1cc1c24f.mjs';
import '../../_chunks/dep-6ad18815.mjs';
import '../../utils/easing.mjs';
function getRelativePosition(elm) {
var relativeElm = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.body;
var _getWindowScroll = getWindowScroll(),
scrollTop = _getWindowScroll.scrollTop,
scrollLeft = _getWindowScroll.scrollLeft;
var _elm$getBoundingClien = elm.getBoundingClientRect(),
elmTop = _elm$getBoundingClien.top,
elmLeft = _elm$getBoundingClien.left;
var _relativeElm$getBound = relativeElm.getBoundingClientRect(),
relElmTop = _relativeElm$getBound.top,
relElmLeft = _relativeElm$getBound.left;
var relativeElmPosition = getElmCssPropValue(relativeElm, "position");
if (relativeElm.tagName.toLowerCase() !== "body" && relativeElmPosition === "relative" || relativeElmPosition === "sticky") {
return {
top: elmTop - relElmTop,
left: elmLeft - relElmLeft
};
}
if (isFixed(elm)) {
return {
top: elmTop,
left: elmLeft
};
}
return {
top: elmTop + scrollTop,
left: elmLeft + scrollLeft
};
}
export { getRelativePosition as default };
//# sourceMappingURL=getRelativePosition.mjs.map