我刚刚与jQuery prepend
工作,并无法让其按预期工作。jQuery prepend - 防止自动滚动
我在做什么:
前面加上一个
.content
div来#main
DIV每隔一秒
但是,当我稍微向下滚动[一旦页面充满了内容] ,我一直滚动回#main
的顶部或最新预先.content
如何做我:
。防止
viewport
更改 - 就像在追加
相关fiddle
我刚刚与jQuery prepend
工作,并无法让其按预期工作。jQuery prepend - 防止自动滚动
我在做什么:
前面加上一个
.content
div来#main
DIV每隔一秒
但是,当我稍微向下滚动[一旦页面充满了内容] ,我一直滚动回#main
的顶部或最新预先.content
如何做我:
。防止
viewport
更改 - 就像在追加
相关fiddle
正如我在评论解释的情况下,滚动实际上并没有改变。该窗口的滚动基于“距离顶部”(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);
};
而且,追加与DfT无关,我没有任何问题。对? – Prasanth
@goldenparrot:并不是说它没有任何关联,只是这个附加并没有将很多元素向下移动。但是,如果您在页面上有两个列表,并且您不断将元素附加到列表顶部,则第二个列表的元素会发生变化,您也会遇到同样的问题。 –
@goldenparrot:我的意思[这里]的示例(http://jsfiddle.net/bradchristie/66RvC/3/)(使用append而不是前置)。现在注意它与内容之后的内容。 –
的观点并没有改变;页面变得更长,所以从顶部滚动距离是静态的,而整个页面长度变得动态变大(因此底部元素超出了视口)。正试图做到这一点,如果你一直滚动到页面底部,最后一个元素保持在视图中而不是“脱落”? –
@BradChristie我基本上想'什么是visibile'[除了滚动条,显然应该改变],根本不要改变,而不管前置。 – Prasanth