From 916a64bbb84a70fe0dbf0df53d3f46790b8e80b3 Mon Sep 17 00:00:00 2001 From: clydee <641365724@qq.com> Date: Wed, 14 Aug 2024 19:40:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dscale=E7=BC=A9?= =?UTF-8?q?=E6=94=BE=E5=AF=BC=E8=87=B4tour=E9=94=99=E4=BD=8D=20#49745?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useTarget.ts | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/hooks/useTarget.ts b/src/hooks/useTarget.ts index 432c3b2..f59b11e 100644 --- a/src/hooks/useTarget.ts +++ b/src/hooks/useTarget.ts @@ -74,6 +74,23 @@ export default function useTarget( }; }, [targetElement, open, updatePos]); + const getBodyDomTransformScaleVale = () => { + const body = document.body; + const style = window.getComputedStyle(body); + const transform = style.getPropertyValue('transform'); + const transformOrigin = style.getPropertyValue('transform-origin'); + console.log(transformOrigin) + let scale = 1; + if (transform && transform !== 'none' && transformOrigin === '0px 0px') { + const values = transform.split('(')[1].split(')')[0].split(','); + const a = parseFloat(values[0]); + const b = parseFloat(values[1]); + scale = Math.sqrt(a * a + b * b); + } + + return scale; + } + // ======================== PosInfo ========================= const mergedPosInfo = useMemo(() => { if (!posInfo) { @@ -84,12 +101,14 @@ export default function useTarget( const gapOffsetY = getGapOffset(1); const gapRadius = gap?.radius || 2; + const bodyScaleRadio = getBodyDomTransformScaleVale(); + return { - left: posInfo.left - gapOffsetX, - top: posInfo.top - gapOffsetY, - width: posInfo.width + gapOffsetX * 2, - height: posInfo.height + gapOffsetY * 2, - radius: gapRadius, + left: (posInfo.left - gapOffsetX) / bodyScaleRadio, + top: (posInfo.top - gapOffsetY) / bodyScaleRadio, + width: (posInfo.width + gapOffsetX * 2) / bodyScaleRadio, + height: (posInfo.height + gapOffsetY * 2) / bodyScaleRadio, + radius: gapRadius / bodyScaleRadio, }; }, [posInfo, gap]); From d9762f287900e8a8b1d777fab426db3ff8874788 Mon Sep 17 00:00:00 2001 From: clydee <641365724@qq.com> Date: Wed, 14 Aug 2024 20:21:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?style:=20=E9=87=8D=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useTarget.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/hooks/useTarget.ts b/src/hooks/useTarget.ts index f59b11e..1f834bb 100644 --- a/src/hooks/useTarget.ts +++ b/src/hooks/useTarget.ts @@ -74,12 +74,11 @@ export default function useTarget( }; }, [targetElement, open, updatePos]); - const getBodyDomTransformScaleVale = () => { + const getBodyDomTransformScaleVal = () => { const body = document.body; const style = window.getComputedStyle(body); const transform = style.getPropertyValue('transform'); const transformOrigin = style.getPropertyValue('transform-origin'); - console.log(transformOrigin) let scale = 1; if (transform && transform !== 'none' && transformOrigin === '0px 0px') { const values = transform.split('(')[1].split(')')[0].split(','); @@ -101,7 +100,7 @@ export default function useTarget( const gapOffsetY = getGapOffset(1); const gapRadius = gap?.radius || 2; - const bodyScaleRadio = getBodyDomTransformScaleVale(); + const bodyScaleRadio = getBodyDomTransformScaleVal(); return { left: (posInfo.left - gapOffsetX) / bodyScaleRadio,