2013-03-02 99 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