5

这更像是一个数学问题,而不是编程。

我想在滚动文档时水平移动一个对象,从浏览器窗口的左边缘到右边缘。

滚动位置“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/

4

1 回答 1

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)。

调整窗口宽度和文档高度以防止对象超出窗口。

您可能需要在调整窗口大小时重新计算这些变量。

于 2013-04-16T06:35:06.070 回答