2013-03-02 77 views
0

我使用js渲染一个网站,并想优化我的渲染周期。如何获得一个事件,当div变得可见

当页面元素对用户可见时,是否有办法获取事件?

这种方式延迟渲染元素,直到它们可见?

+0

重复的[如何检查一个元素是否在用户与jQuery的视图](http://stackoverflow.com/questions/8229291/how-to-check-if-an-element-is-in -THE-视图的最用户与 - jquery的)? – Rudie 2013-03-02 19:42:01

+1

其实我说**没有**,因为这个问题要么标记jQuery,也没有提到他使用它。 – 2013-03-02 23:38:40

回答

1

既然你是否有任何具体的lib /框架您使用的,或者是有渲染元素可见我会给你对此有何具体条件没有说明:

jQuery $(document).ready()可以检测整个页面是否被加载。另一方面,如果元素是显示:none或visibility:hidden,或者两者都有,你可以使用jQuery是这样的:$('element')。is(':visible')作为条件并且触发if语句中的任何内容。

1
var viewportWidth = jQuery(window).width(), 
viewportHeight = jQuery(window).height(), 
documentScrollTop = jQuery(document).scrollTop(), 
documentScrollLeft = jQuery(document).scrollLeft(), 
minTop = documentScrollTop, 
maxTop = documentScrollTop + viewportHeight, 
minLeft = documentScrollLeft, 
maxLeft = documentScrollLeft + viewportWidth, 
$myElement = jQuery(element), // your element jquery object 
elementOffset = $myElement.offset(); 
if (
(elementOffset.top > minTop && elementOffset.top < maxTop) && 
(elementOffset.left > minLeft &&elementOffset.left < maxLeft) 
) { 
    alert('element is visible'); 
    } else { 
    alert('element is not visible'); 
    } 
+0

这是使用jQuery - 如果你不能使用jQuery,请让我知道我会尝试在常规js中做 – 2013-03-02 19:52:26