UNPKG

tdesign-vue-next

Version:
1 lines 2.59 kB
{"version":3,"file":"getRelativePosition.mjs","sources":["../../../../components/guide/utils/getRelativePosition.ts"],"sourcesContent":["import { getElmCssPropValue, isFixed, getWindowScroll } from '@tdesign/shared-utils';\n\n/**\n * 获取元素相对于另一个元素的位置(或者说相对于 body)\n * 感谢 `meouw`: http://stackoverflow.com/a/442474/375966\n */\nexport function getRelativePosition(elm: HTMLElement, relativeElm: HTMLElement = document.body) {\n const { scrollTop, scrollLeft } = getWindowScroll();\n const { top: elmTop, left: elmLeft } = elm.getBoundingClientRect();\n const { top: relElmTop, left: relElmLeft } = relativeElm.getBoundingClientRect();\n const relativeElmPosition = getElmCssPropValue(relativeElm, 'position');\n\n if (\n (relativeElm.tagName.toLowerCase() !== 'body' && relativeElmPosition === 'relative') ||\n relativeElmPosition === 'sticky'\n ) {\n return {\n top: elmTop - relElmTop,\n left: elmLeft - relElmLeft,\n };\n }\n\n if (isFixed(elm)) {\n return {\n top: elmTop,\n left: elmLeft,\n };\n }\n\n return {\n top: elmTop + scrollTop,\n left: elmLeft + scrollLeft,\n };\n}\n"],"names":["getRelativePosition","elm","relativeElm","arguments","length","undefined","document","body","_getWindowScroll","getWindowScroll","scrollTop","scrollLeft","_elm$getBoundingClien","getBoundingClientRect","elmTop","top","elmLeft","left","_relativeElm$getBound","relElmTop","relElmLeft","relativeElmPosition","getElmCssPropValue","tagName","toLowerCase","isFixed"],"mappings":";;;;;;;;;;;AAMO,SAASA,mBAAoBA,CAAAC,GAAA,EAA4D;AAAA,EAAA,IAA1CC,WAA2B,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAAG,CAAAA,CAAAA,GAAAA,QAAA,CAASC,IAAM,CAAA;AAC9F,EAAA,IAAAC,gBAAA,GAAkCC,eAAgB,EAAA;IAA1CC,SAAA,GAAAF,gBAAA,CAAAE,SAAA;IAAWC,UAAW,GAAAH,gBAAA,CAAXG,UAAW,CAAA;AAC9B,EAAA,IAAAC,qBAAA,GAAuCX,IAAIY,qBAAsB,EAAA;IAApDC,MAAA,GAAAF,qBAAA,CAALG,GAAK;IAAcC,OAAQ,GAAAJ,qBAAA,CAAdK;AACrB,EAAA,IAAAC,qBAAA,GAA6ChB,YAAYW,qBAAsB,EAAA;IAAlEM,SAAA,GAAAD,qBAAA,CAALH,GAAK;IAAiBK,UAAW,GAAAF,qBAAA,CAAjBD;AAClB,EAAA,IAAAI,mBAAA,GAAsBC,kBAAmB,CAAApB,WAAA,EAAa,UAAU,CAAA,CAAA;AAGnE,EAAA,IAAAA,WAAA,CAAYqB,QAAQC,WAAY,EAAA,KAAM,UAAUH,mBAAwB,KAAA,UAAA,IACzEA,wBAAwB,QACxB,EAAA;IACO,OAAA;MACLN,KAAKD,MAAS,GAAAK,SAAA;MACdF,MAAMD,OAAU,GAAAI,UAAAA;KAClB,CAAA;AACF,GAAA;AAEI,EAAA,IAAAK,OAAA,CAAQxB,GAAG,CAAG,EAAA;IACT,OAAA;AACLc,MAAAA,GAAK,EAAAD,MAAA;AACLG,MAAAA,IAAM,EAAAD,OAAAA;KACR,CAAA;AACF,GAAA;EAEO,OAAA;IACLD,KAAKD,MAAS,GAAAJ,SAAA;IACdO,MAAMD,OAAU,GAAAL,UAAAA;GAClB,CAAA;AACF;;;;"}