util.js (711B)
1 // Returns true if element's center is within the visual viewport bounds. 2 function isInViewport(element) { 3 const viewportRect = { 4 left: visualViewport.offsetLeft, 5 top: visualViewport.offsetTop, 6 right: visualViewport.offsetLeft + visualViewport.width, 7 bottom: visualViewport.offsetTop + visualViewport.height 8 }; 9 10 const elementRect = element.getBoundingClientRect(); 11 const elementCenter = { 12 x: elementRect.left + elementRect.width / 2, 13 y: elementRect.top + elementRect.height / 2 14 }; 15 16 return elementCenter.x > viewportRect.left && 17 elementCenter.x < viewportRect.right && 18 elementCenter.y > viewportRect.top && 19 elementCenter.y < viewportRect.bottom; 20 }