From 5553799f81a3e629255311f9f0c50d94ed8027d3 Mon Sep 17 00:00:00 2001 From: youluna Date: Tue, 9 Jul 2019 16:56:44 +0800 Subject: [PATCH] fix(Overlay): endless loop in position calculate --- src/overlay/utils/position.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/overlay/utils/position.js b/src/overlay/utils/position.js index db8c3df7c3..9f87808ac9 100644 --- a/src/overlay/utils/position.js +++ b/src/overlay/utils/position.js @@ -353,12 +353,14 @@ export default class Position { _isInViewport(element) { const viewportSize = _getViewportSize(); // Avoid animate problem that use offsetWidth instead of getBoundingClientRect. - const elementRect = _getElementRect(element); + // const elementRect = _getElementRect(element); + const elementRect = element.getBoundingClientRect(); + return ( elementRect.left >= 0 && - elementRect.left + element.offsetWidth <= viewportSize.width && + elementRect.left + element.offsetWidth < viewportSize.width && elementRect.top >= 0 && - elementRect.top + element.offsetHeight <= viewportSize.height + elementRect.top + element.offsetHeight < viewportSize.height ); } // 在这里做RTL判断 top-left 定位转化为等效的 top-right定位