0

ページ内の div まで下にスクロールしてから、少し上にスクロールしたいと考えています。

jqueryを使用しています。

私はこのonclickバインドを取得しました:

{
 $.scrollTo( $('#theDestDiv'), 1000);
 window.scrollTo(0, (window.pageYOffset)-100 );
}

問題は、ページが theDestDiv へのスクロールを完了する前に window.scroll が発生し、pageYOffset が間違った値を取得することです。

setTimeout を試しましたが、タイムアウトがスクロールダウンにかかる時間の場合にのみ機能します。

修正方法はありますか?

4

2 に答える 2

1

jqueryのアニメーション完全コールバック関数を使用してみましたか?アニメーションの完了後にコードを実行することができます。以下に例を示します。

var scrollTo = $('#theDestDiv').offset(); //find the target
$('html, body').animate({scrollTop:scrollTo}, 1000, function(){
    //on animation complete, scroll back up
    var scrollUp = scrollTo.top-100;
    $('html, body').animate({scrollTop:scrollUp}, 1000);
});

一種の「バウンス」を与えようとしている場合は、代わりにjquery.easingプラグインを使用することをお勧めします。使用したいイージングは​​easeOutBackで、アニメーションが最終位置を通過してゆっくりと戻ります。http://gsgd.co.uk/sandbox/jquery/easing/

于 2013-03-10T12:56:57.790 に答える
1
$.scrollTo( $('#theDisclaimer'), 1000);
scroll_up_disclaimer();

function scroll_up_disclaimer(){
    $("html, body").animate({scrollTop:"-=68"})
}
于 2013-06-18T13:37:21.770 に答える