2013-04-16 77 views
5

這比編程更多的是數學問題。jQuery - 在垂直滾動上水平移動對象

當滾動文檔時,我想從瀏覽器窗口的左邊緣向右邊緣水平移動對象。

滾動位置「0」應該將對象置於窗口的最左側,滾動位置「向下在文檔的末尾」應該使對象位於窗口的右側,但不會更遠。

我試過,但失敗:

var window_width = $(window).width(); 

$(window).scroll(function() { 
    var scroll_position = $(window).scrollTop(); 
    var object_position_left = scroll_position*(scroll_position/window_width); 

    $('#object').css({'left':object_position_left}); 
}); 

http://jsfiddle.net/BA5p4/

+0

你的問題/錯誤是什麼? –

+0

問題是我無法確定數學運算。當向下滾動到最底部或移動到較慢時,該對象要麼移動到最右邊,這導致在滾動一直向下時該對象不在最右邊。 – Tobias

+0

最好鏈接到您的測試頁面,或者在JSfiddle中重新創建問題。 –

回答

11

觀看演示中jsFiddle

var window_width = $(window).width() - $('#object').width(); 

var document_height = $(document).height() - $(window).height(); 

$(function() { 
    $(window).scroll(function() { 
     var scroll_position = $(window).scrollTop(); 
     var object_position_left = window_width * (scroll_position/document_height); 
     $('#object').css({ 
      'left': object_position_left 
     }); 
    }); 
}); 

你只需要對象移動到左邊(基於window_width)與任何向下滾動的百分比(基於document_height)。

調整窗口寬度和文檔高度以防止物體超出窗口。

您可能需要在窗口重新調整時重新計算這些變量。

+0

神聖莫里。非常感謝Sen!高5! – Tobias