Javascript 确定元素是否在屏幕上
有没有办法通过使用jQuery确定某个元素当前是否在用户的屏幕/视口中可见?(不使用其他外部库)不直接使用默认jQuery,但您可以实现自己的功能,以后可以使用一个jQuery元素:Javascript 确定元素是否在屏幕上,javascript,jquery,viewport,Javascript,Jquery,Viewport,有没有办法通过使用jQuery确定某个元素当前是否在用户的屏幕/视口中可见?(不使用其他外部库)不直接使用默认jQuery,但您可以实现自己的功能,以后可以使用一个jQuery元素: (function ($) { $.fn.isOnScreen = function () { var topView = $(window).scrollTop(); var botView = topView + $(window).height(); v
(function ($) {
$.fn.isOnScreen = function () {
var topView = $(window).scrollTop();
var botView = topView + $(window).height();
var topElement = this.offset().top;
var botElement = topElement + this.height();
return ((botElement <= botView) && (topElement >= topView));
}
})(jQuery);
很好的一个。。。但是,如果元素本身在屏幕上,但是在一个带有overflow:hidden的div容器之外,您会怎么做?您的意思是如果父元素是隐藏的@errandno,父级是可见的。类似于:父div是100x100px,溢出隐藏,它包含5个大小相同的图像-只有第一个图像可见,您必须滚动以使另一个可见。但是你的视口是20000x1000px,所以技术上它在屏幕上,但是由于溢出,它是不可见的…@差事啊,我现在明白了。。是的,我的答案只解决了DOM在屏幕上的观点,如果你能提供一个解决这个问题的解决方案,我将很高兴学习新的东西并接受你的答案;):)在这个问题上看不到简单的解决方案。我猜您必须扩展您的函数,以检查元素的父元素之一是否有溢出:隐藏,如果有,请查找此父元素的维度,并检查您的元素是否在这些维度内。。。别忘了也要考虑滚动条的位置。。。好吧,我看不到类似的用例;)这已经被回答了很多很多次了。你问了,然后在一分钟内回答了。为什么?@DeeMac我一直在寻找这样一个问题,但没有找到解决办法。我已经发布了这个问题并给出了答案。(回答您自己的问题功能)可能重复
(function ($) {
$.fn.isOnScreen = function () {
var topView = $(window).scrollTop();
var botView = topView + $(window).height();
var topElement = this.offset().top;
var botElement = topElement + (this.height() / 4); //<---
return ((botElement <= botView) && (topElement >= topView));
}
})(jQuery);