我刚刚使用jQuery prepend
并且无法按预期工作。
我在做什么:
每隔一秒将
.content
div加到#main
div
但是,当我向下滚动[一旦页面内容充满],我会继续滚动回#main
的顶部或最新前置.content
我如何:
阻止
viewport
更改 - 例如附加
相关fiddle
答案 0 :(得分:13)
正如我在评论中所解释的那样,滚动实际上并没有改变。窗口的滚动基于“距离顶部的距离”(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 );
};