2013-11-26 60 views
3

我想獲取元素(div)在視口中的百分比。JS - 獲取視口中元素的百分比

  • 當元素進入我想要的0
  • 值視當元素和元素的高度離開視我想要的100

這裏的價值是什麼5個視我想這樣做http://imgur.com/2ZPpps5

我想:

$(window).bind('scroll',function(){ 
var viewportHeight = $(window).height(), 
elementOffsetTop = $('#element').offset().top, 
elementHeight = $('#element').height(); 

var numerator = 200 * (window.pageYOffset-elementOffsetTop+viewportHeight); 
var denominator = (elementOffset+elementHeight+viewportHeight); 
console.log(numerator/denominator); 
}); 

這段代碼有效。 (我不明白爲什麼我必須乘以2)。

但是當我調整我的網頁,這個代碼不工作(0之間的值,以85 ...)

想法?

回答

7

http://jsfiddle.net/nate/4N3Pj/1/

var $element = $('#element'); 
var $win = $(window); 
var $vis = $('#visible'); 

$win.on('scroll', function() { 
    console.log(percentageSeen()); 
    $vis.text(percentageSeen() + '%'); 
}); 

function percentageSeen() { 
    var viewportHeight = $(window).height(), 
     scrollTop = $win.scrollTop(), 
     elementOffsetTop = $element.offset().top, 
     elementHeight = $element.height(); 


    if (elementOffsetTop > (scrollTop + viewportHeight)) { 
     return 0; 
    } else if ((elementOffsetTop + elementHeight) < scrollTop) { 
     return 100; 
    } else { 
     var distance = (scrollTop + viewportHeight) - elementOffsetTop; 
     var percentage = distance/((viewportHeight + elementHeight)/100); 
     percentage = Math.round(percentage); 
     return percentage; 
    } 
} 

$win.trigger('scroll'); 
+0

這是非常有用的。 我的目標是讓當你向下滾動,之間的百分比: - 當元素進入視 - 視 的時候它完全出來(包括DIV的高度),但你的腳本將幫助我做到這一點 – youyoup

+0

啊,你想要相反。很抱歉誤讀你。 – Nate

+0

反轉它非常簡單。我已更新我的示例:它現在是否滿足您的需求? – Nate