From 97652eb14bd1f09517bf630460cefcc4b4ce3e47 Mon Sep 17 00:00:00 2001 From: Kylin <75473409+lxKylin@users.noreply.github.com> Date: Tue, 20 Aug 2024 11:42:06 +0800 Subject: [PATCH] refactor(components): [affix] optimized code logic (#17929) * perf(components): [affix] optimized code logic * perf(components): [affix] restore the original writing --- packages/components/affix/src/affix.vue | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/components/affix/src/affix.vue b/packages/components/affix/src/affix.vue index f714274857..69015d38a8 100644 --- a/packages/components/affix/src/affix.vue +++ b/packages/components/affix/src/affix.vue @@ -74,27 +74,26 @@ const update = () => { ? document.documentElement.scrollTop : scrollContainer.value.scrollTop || 0 - if (props.position === 'top') { - if (props.target) { - const difference = - targetRect.bottom.value - props.offset - rootHeight.value - fixed.value = props.offset > rootTop.value && targetRect.bottom.value > 0 + const { position, target, offset } = props + const rootHeightOffset = offset + rootHeight.value + + if (position === 'top') { + if (target) { + const difference = targetRect.bottom.value - rootHeightOffset + fixed.value = offset > rootTop.value && targetRect.bottom.value > 0 transform.value = difference < 0 ? difference : 0 } else { - fixed.value = props.offset > rootTop.value + fixed.value = offset > rootTop.value } - } else if (props.target) { + } else if (target) { const difference = - windowHeight.value - - targetRect.top.value - - props.offset - - rootHeight.value + windowHeight.value - targetRect.top.value - rootHeightOffset fixed.value = - windowHeight.value - props.offset < rootBottom.value && + windowHeight.value - offset < rootBottom.value && windowHeight.value > targetRect.top.value transform.value = difference < 0 ? -difference : 0 } else { - fixed.value = windowHeight.value - props.offset < rootBottom.value + fixed.value = windowHeight.value - offset < rootBottom.value } }