无限滚动两个方向

时间:2013-12-09 18:00:30

标签: javascript jquery

我一直在小型网站上工作,我希望它可以滚动并向上和向下循环。

我做了一个jsfiddle来表明我的问题。目前我正在使用这种方法:

$(document).ready(function(){
        $(window).scroll(function() {
            if ( $(window).scrollTop() >= ($('body').height() - $(window).height()) ) {
                $(window).scrollTop(1);
            }
            else if ( $(window).scrollTop() == 0 ) {
                $(window).scrollTop($('body').height() - $(window).height() -1);
            }    
        });
    });

http://jsfiddle.net/2LDFA/

我的问题是,没有转换,只有顶部和底部的内容完全相同时,此方法才有效。

任何想法如何在每次用户到达结尾时将相同的div添加到顶部和底部?

2 个答案:

答案 0 :(得分:4)

这是一个工作小提琴:http://jsfiddle.net/2L23c/

这是javascript:

(function($){
    $(document).ready(function(){
        var html = $(".what").html();
        var what = '<div class="what">'+html+'</div>';
        $(window).scrollTop(1);
        $(window).scroll(function() {
            if ( $(window).scrollTop() >= ($('body').height() - $(window).height()) ) {
                $(".what").last().after(what);
                if ($(".what").length > 2) {
                    $(".what").last().prev().remove();
                    $(window).scrollTop($(window).scrollTop() - $(".what").first().height());
                }
            }
            else if ( $(window).scrollTop() == 0 ) {
                $(".what").first().before(what);
                $(window).scrollTop($(".what").first().height());
                if ($(".what").length > 2) {
                    $(".what").last().remove();
                }
            }    
        });
    }); 
})( jQuery );

答案 1 :(得分:0)

好吧,如果你正在使用jquery,你可以使用insertAfter等相当容易地在页面上移动div。当你到达底部时,抓住页面上的第一个div并在最后一个之后向下移动。有一些有趣且稍微挑剔的工作要做,以确保你总是得到正确的,但它应该是完全可行的。