0

一連のスクロール可能なコンテンツを含むコンテナ div があります (iScroll を使用しているレコードについては、ソリューションが変更された場合)。一番上までスクロールすると、現在のスクロール位置の上にコンテンツをロードしたいと思います。jQuery "prepend();" を使用して div を単純に先頭に追加すると、スクロール可能な領域のコンテンツが下にシフトします。理想的には、現在のコンテンツをフレーム内に保持し、スクロール可能な領域をコンテンツの上に拡大したいと考えています。

何かご意見は?

ありがとう!

4

2 に答える 2

1

iScroll Web サイトによると、次のメソッドがありscrollToElementます。

scrollToElement(el, runtime): スクロール領域内の任意の要素にスクロールします。elCSS3 セレクターでなければなりません。例えば:scrollToElement("#elementID", '400ms')

常に一定量のdivs を先頭に追加する場合 (たとえば、常に単一のdiv)、新しいコンテンツを先頭に追加した直後に、それを使用して (たとえば) 2 番目の要素にスクロールできると思います。

// ... (prepend new content)
myScroll.scrollToElement('#scroller :nth-child(2)', '0ms');

私はこれを試していないので、これがうまくいくかどうか教えてください。

于 2012-08-17T22:43:19.640 に答える
0

iScroll のソースをざっと見てみると、次のようなことがわかりました。

  • 現在のxとは、とyからいつでも利用できます。myScroll.xmyScroll.y
  • iScroll には、指定された要素のとオフセット_offset(el)を返す内部関数があります。lefttop

これにより、基本的に 2 つの解決策が開かれます。

  1. を使用し_offset(el)ます。可能ですが、これはお勧めできません。アンダースコアは、関数を「プライベート」とマークするための規則です。これは、とりわけ、公式 API の一部ではないことを意味します。

    また

  2. 新しく追加された要素の高さを使用します。

    var x = myScroll.x;
    var y = myScroll.y;
    
    // ... (prepend new content)
    y += $('#scroller :first-child').outerHeight();
    
    myScroll.scrollTo(x, y, '0ms');
    

    に渡す必要がある場合があります。これtrueにより.outerHeight()、マージンが含まれます。

繰り返しますが、私はこれをテストしていないので、うまくいくかどうか教えてください。

于 2012-08-18T00:20:00.777 に答える