是否有统一的方法来了解节点是否可见?

时间:2010-06-17 21:32:15

标签: javascript html css

我希望能够知道节点是否可见并在屏幕上呈现。据我所知,至少有3种标准且简单的方法可以使HTML节点不可见:

  • 设置opacity: 0;
  • 设置display: none;
  • 设置visibility: hidden

我可以检查这三个,但我担心人们在隐藏内容的方式上可以发挥创意:

  • 使用负边距在屏幕外发送元素;
  • 使用0的宽度或高度隐藏溢出;
  • 我相信人们已经发展了更多。

所以我想知道是否有一种标准方法来确定节点是否呈现给屏幕。我很确定所有主流浏览器都会自行确定加速绘图的速度,所以也许它会以某种方式曝光。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用jQuery的:visible修饰符。

http://api.jquery.com/visible-selector/

不幸的是,我很确定没有考虑到你所谈论的任何“棘手”案件。

答案 1 :(得分:0)

如果这是您的页面,那么您可以拥有大部分控制权,这就是应用您实施的标准的问题。如果这是 forign 页面(例如,如果您正在编写书签),则变量数量非常大。

可见性对人和浏览器意味着不同的东西。浏览器需要知道页面的上下文和布局以及对象是否占用空间,即使在opacity:0visibility:hidden的情况下也是如此,这就是jQuery以这种方式工作的原因。 / p>

所以你需要查看特定的元素,包括它的边距,填充,溢出属性,可见性,显示,所有不透明度设置,我猜也检查color:rgba(*,*,*,0)。然后你需要查看每个父对象一直回到文档。