我只是在使用 jQuery prepend
,但无法按预期工作。
我在做什么:
每隔一秒添加一个
.content
div 到#main
div
但是,当我向下滚动一点时[一旦页面充满了内容],我会不断滚动回到#main
's top 或 latest 前面.content
我如何能:
防止
viewport
改变 - 比如在追加的情况下
相关小提琴
正如我在评论中解释的那样,滚动实际上并没有改变。窗口的滚动基于“与顶部的距离”(DfT)。也就是说,如果您没有滚动条,那么您的 DfT 为 0。一旦引入了滚动条,您现在就有一段距离可以使用了。
因为内容越来越长,所以视口只有这么多像素高,一些内容“从”页面底部“掉下来”(预先使 DfT 偏离新元素的高度)。
我能想到的最好方法是用新元素的高度来对抗它。这允许您滚动到一个位置,然后随着新元素的添加,您相应地修改滚动位置。
这是我的意思的一个例子:http: //jsfiddle.net/bradchristie/66RvC/1/
和代码(供参考):
var f = function(){
var t = $(window).scrollTop(), // Window's current scroll position
$d = $(d()).prependTo('#main'), // store the new element
h = $d.outerHeight(); // also get its height
if (t){ // Only adjust if they've scrolled
$(window).scrollTop(t + h); // add the delta to the scroll position
}
setTimeout( f, 1000 );
};