Стандартные функции jquery с использованием псевдоклассов is(«:visible»), is(«:hidden») не решают такой задачи, когда нужно определить что элемент находится в зоне окна прокрутки и видим. Чтобы определить можно воспользоваться такой функцией:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | var Visible = function(target) { var targetPosition = { top: window.pageYOffset + target.getBoundingClientRect().top, left: window.pageXOffset + target.getBoundingClientRect().left, right: window.pageXOffset + target.getBoundingClientRect().right, bottom: window.pageYOffset + target.getBoundingClientRect().bottom }, windowPosition = { top: window.pageYOffset, left: window.pageXOffset, right: window.pageXOffset + document.documentElement.clientWidth, bottom: window.pageYOffset + document.documentElement.clientHeight }; if (targetPosition.bottom > windowPosition.top && targetPosition.top < windowPosition.bottom && targetPosition.right > windowPosition.left && targetPosition.left < windowPosition.right) { return true; } else { return false; } }; |