在jQuery中测试元素可见性

在jQuery中测试元素可见性,jquery,visibility,Jquery,Visibility,确定元素在页面上是否真实可见的最佳方法是什么?因为元素不是通过CSS隐藏的,而是在可滚动区域的可见部分(窗口或某个溢出的块元素),所以像素都在改变 我想我需要首先对照元素及其父元素检查.is(“:hidden”)。然后我需要遍历所有父元素和窗口,检查溢出滚动/自动/隐藏,然后将父元素的滚动位置和大小与原始元素的位置和大小进行比较。我还需要检查绝对位置和z指数 有更简单的方法吗?有一个插件 我已经实现了插件,您可以在其中指定一个祖先,在您的情况下: $('html').css('height',

确定元素在页面上是否真实可见的最佳方法是什么?因为元素不是通过CSS隐藏的,而是在可滚动区域的可见部分(窗口或某个溢出的块元素),所以像素都在改变

我想我需要首先对照元素及其父元素检查.is(“:hidden”)。然后我需要遍历所有父元素和窗口,检查溢出滚动/自动/隐藏,然后将父元素的滚动位置和大小与原始元素的位置和大小进行比较。我还需要检查绝对位置和z指数


有更简单的方法吗?

有一个插件

我已经实现了插件,您可以在其中指定一个
祖先,在您的情况下:

$('html').css('height', '100%');   // make `html` the height of the viewport
$('#your-element').inside('html'); // compare `#your-element` to `html`
将返回,例如:

{
  left: 0.2,  // your element is "x-inside" (because >0 and <1)
  top: -2.3   // but is not "y-inside" (because <0)
}
{

左图:0.2,//您的元素是“x-inside”(因为>0,插件并不能真正满足我的需要。当元素垂直滚动到视图中时,它会触发一个事件,但不允许我简单地检查任意元素是否可见。啊,读得不够好。不过,我打赌如果您看一看它的单页代码()你将能够适应你的情况。