我需要能够检测元素边界何时在视口中 - 足够简单。要做到这一点,我使用jQuery的scroll
事件。设置基本测试后,我注意到window.scrollY
和window.pageYOffset
返回的值不准确。
每个div
的高度为1000px,但我的window.scrollY
和window.pageYOffset
返回756?
有什么想法吗?我有什么遗失的东西吗?
(最新版本的Chrome& Firefox中似乎就是这种情况)
答案 0 :(得分:1)
除非您需要支持IE7或其他内容,否则您不应该使用这些元素来确定视口中是否有某些内容。像这样的东西是非常优越的:
function isInWindow(el){
var rect = el.getBoundingClientRect(),
$window = $(window);
return (
(rect.top >= 0) &&
(rect.left >= 0) &&
(rect.right <= $window.width()) &&
(rect.bottom <= $window.height())
);
}
isInWindow($element.get(0));
// or for multiple
$element.each(function(){
isInWindow(this);
});
我知道您可能仍然对价值观不同的原因感到好奇,但这应该会让您了解是否在浏览器窗口中。