jQueryprepend
を操作しているところですが、期待どおりに機能させることができませんでした。
私がしていること:
1秒ごと
.content
にdivの前にdivを付ける#main
しかし、[ページがコンテンツでいっぱいになると]少し下にスクロールすると、#main
の先頭または最新の先頭にスクロールして戻り続けます.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 );
};