0

私は ScrollMagic のドキュメントを見ていました。以下に示すように、コールバック関数を使用してスクロール動作を変更できることがわかりました。

controller.scrollTo(function (newScrollPos) {
    $("body").animate({scrollTop: newScrollPos});
});

この関数にさらにパラメータを渡す方法はありますか? 特定のリンク/アンカーについては、オフセットを使用したいと思います。より多くのパラメーターを渡す方法、またはコールバック内から ScrollTarget を取得する方法を理解できませんでした。

4

1 に答える 1

0

この関数は、その数値に移動するカスタム スクロール動作を作成するだけであるため、数値を受け取ることのみを目的としています。

ただし、 を使用して、コールバック内でコントローラを参照できますthis

要素またはシーンの位置をスクロール位置に変換する機能 (要素またはシーンを に指定した場合controller.scrollTo) は、カスタム コールバックが呼び出される前に処理されます。

したがって、特定のケースで特定のオフセットを使用して動作させるには、関数が実際に呼び出される前にそれを処理する必要があります。
たとえば、クリック ハンドラーで。

ここにいくつかの擬似コードがあります:

anchor.on(click, function() {
    if (this is an exception) {
         var customPos = targetElement.offset().top + offset;
         controller.scrollTo(customPos);
    } else {
         controller.scrollTo(targetElement);
    }
});
于 2015-03-16T12:42:30.063 に答える