【发布时间】:2012-05-22 07:40:39
【问题描述】:
有几种方法可以做到这一点(据我所知)。
测试css显示
if ($('#foo').css('display') == 'none')
测试可见性
if ($('#foo').is(':visible'))
在可见性中我可以检查元素是否存在。
如果元素占用了文档中的空间,则认为它们是可见的。 可见元素的宽度或高度大于零。
具有可见性的元素:隐藏或不透明度:0 被认为是可见的, 因为它们仍然会占用布局中的空间。
但是,请注意,在这两种情况下,我都无法(由用户)测试可见性,因为:
隐藏元素可以通过将 display 属性设置为 “无”或“隐藏”的可见性属性。但是,请注意 这两种方法产生不同的结果:
可见性: hidden 隐藏一个元素,但它仍然会占用相同的 空间和以前一样。该元素将被隐藏,但仍会影响 布局。
display: none 隐藏元素,不会占用任何空间。这 元素将被隐藏,页面将显示为 元素不存在:
因此,在这两个示例中,我都没有测试该元素是否对用户在所有意义上都是可见的。
所以我的问题是:
- 上面的两个 if 代码有什么区别?
- 测试元素是否对用户可见的最佳方法是:
我应该使用类似的东西吗:
if ($('#foo').is(':visible') &&
$('#foo').css('opacity') > 0 &&
$('#foo').css('visibility') != 'hidden')
【问题讨论】:
-
你试过最后一段代码是否有效吗?
-
1. 测试元素是否对用户可见的最佳方法是什么? >>
$('#foo').is(':visible')是检查元素是否对用户可见(意思是显示)的最佳方法 2. 上面的两个 if 代码有什么区别? >> 您引用了visible和display之间的区别。那么现在,您的问题是什么? -
如果一个元素完全可见,但通过
z-index将另一个元素定位在它上面呢?如果这个最上面的 div 有一个不透明的背景怎么办?还是透明的?还是部分透明的?元素“下方”是否可见? -
看看你的屏幕,看看你是否能自己发现元素。永远不要相信用户,他们什么都不知道?
-
@Vega 和其他人我也在 +Caleb 回答中发表了评论,解释了我的问题中的大部分这些 cmets,take a look at my comment 我希望这会让事情变得清晰,我们都能得到最好的结果这个的。提前感谢您的关注。
标签: javascript jquery css performance dom