2011-11-13 78 views

回答

0

看到下面的lazyload插件:

http://plugins.jquery.com/files/jquery.lazyload.js__6.txt 

與註釋開始部分「返回相對於當前視圖項目的狀態爲」檢查是否一個元素是在視口中可見。

0

如果您正在使用jQuery只是嘗試檢查文件位置

$('html').position().top; 

例如:

$(document).bind("scroll", checkLink); 

function checkLink(){ 

    /* Position will checked out after 1 sec when user finish scrolling */ 
    var s = setTimeout(function(){ 

    var docHeight = $('html').position().top; 
    var allLinks = $('.navigation a'); 

    if (docHeight < 0 && docHeight <= -1000) { 

     allLinks.removeClass('active'); 
     $('a.firstlink').addClass('active'); 

    } else 
    if (docHeight < -1000 && docHeight <= -2000) { 

     allLinks.removeClass('active'); 
     $('a.secondlink').addClass('active'); 

    } else { /* .... */ } 

    $(document).bind("scroll", checkLink); 
    }, 1000); 

    $(document).unbind('scroll'); 
} 

,但在你的榜樣球員還沒有很長一段時間內保持在這個:)他們只需點擊切換類

$('#navigation').localScroll(); 
    $('#navigation li a').click(function() { 
     $('#navigation li a').removeClass("active"); 
     $(this).addClass("active"); 
    }); 
4

使用$('#element').offset().top;檢測元素頂端。

$(window).scrollTop();檢測當前滾動位置。

$(window).height();檢測當前窗口高度。

然後,你實際上只需要一些簡單的數學計算。

1
function isScrolledIntoView(elem) 
{ 
    var docViewTop = $(window).scrollTop(); 
    var docViewBottom = docViewTop + $(window).height(); 

    var elemTop = $(elem).offset().top; 
    var elemBottom = elemTop + $(elem).height(); 

    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom)); 
} 

來源:Check if element is visible after scrolling

17

這裏有你需要的所有變量...

var $myElt  = $('.myElement');  // whatever element you want to check 
var $window  = $(window);   // the window jQuery element 
var myTop  = $myElt.offset().top; // the top (y) location of your element 
var windowTop = $window.scrollTop();   // the top of the window 
var windowBottom = windowTop + $window.height(); // the bottom of the window 

然後確保你的元素是窗口的範圍內......

if (myTop > windowTop && myTop < windowBottom) { 
    // element is in the window 
} else { 
    // element is NOT in the window 
    // maybe use this to scroll... 
    // $('html, body').animate({scrollTop: myTop}, 300); 
} 

jQuery參考: