有几种方法可以做到这一点(我知道)。
测试css显示
if ($('#foo').css('display') == 'none')
测试可见性
if ($('#foo').is(':visible'))
在可见性中,我可以检查元素是否存在。
如果元素占用了文档中的空间,则元素被认为是可见的。可见元素的宽度或高度大于零。
具有 visibility: hidden 或 opacity: 0 的元素被认为是可见的,因为它们仍然占用布局中的空间。
但是,请注意,在两者中我都无法测试可见性(由用户),因为:
隐藏元素可以通过将 display 属性设置为“none”或将 visibility 属性设置为“hidden”来完成。但是,请注意这两种方法会产生不同的结果:
可见性:隐藏隐藏一个元素,但它仍然会占用与以前相同的空间。该元素将被隐藏,但仍会影响布局。
display: none 隐藏元素,不会占用任何空间。该元素将被隐藏,页面将显示为好像该元素不存在:
因此,在这两个示例中,我都没有测试该元素是否对用户在所有意义上都是可见的。
所以我的问题是:
- 上面的两个 if 代码有什么区别?
- 测试元素是否对用户可见的最佳方法是什么:
我是否必须使用类似的东西:
if ($('#foo').is(':visible') &&
$('#foo').css('opacity') > 0 &&
$('#foo').css('visibility') != 'hidden')