5

jQueryprependを操作しているところですが、期待どおりに機能させることができませんでした。

私がしていること:

1秒ごと.contentにdivの前にdivを付ける#main

しかし、[ページがコンテンツでいっぱいになると]少し下にスクロールすると、#mainの先頭または最新の先頭にスクロールして戻り続けます.content

どうすればよいですか:

変更を防ぐviewport-追加の場合のように

関連するフィドル

4

1 に答える 1

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 );
};
于 2012-10-17T18:24:41.647 に答える