6

jqueryがscrollTopを定義されたdivにアニメーション化するという問題に直面しています。

このコードを使用して、スクロールをアニメーション化します。

$('body').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){
    $('#ajax_load').load('file.php');
});

ただし、これはFirefoxまたはIEでは機能しません。

そして、$('html').animate代わりに使用すると$('body').animate、Chromeでは機能しません。

私も両方を使おうとしました:$('html,body').animateしかし、問題はコールバック関数$('#ajax_load').load('file.php');が2回実行され、これがファイルを2回呼び出すことです。

私は一時的にphpを使用して問題を解決しましたが、この解決策では、すべてのページでコードを2回繰り返して、とをサポートするブラウザーの2つの配列を作成する必要が$('body').animateあり$('html').animateました。

ここで検索して、これを見つけました:jquery animate scrolltop callbackしかし、機能しませんでした。

私も試しました:

$(window).animate

$(document).animate

$('#container-div').animate

しかし、これを達成する方法はありません。

これを実現するためのクロスブラウザ方式を見つけることはできますか?

4

2 に答える 2

1

ハッキーなソリューションでうまくいくかもしれません...

$('html,body').animate({scrollTop: $('#sections_display').offset().top-100}, 500);

setTimeout(function(){
    $('#ajax_load').load('file.php');
}, 500);
于 2012-05-11T14:57:05.237 に答える
1

この投稿で述べたように

すべての主要なブラウザで動作するわけではありません。それらのすべてが「html」に適用されたときにスクロールをサポートしているわけではなく、一部は「本文」が必要です。これは、Quirks モードかどうかによって異なります。iframeをアニメーション化するときはさらに問題になります

トピックのスターターは、アニメーションをhtml,body互いにではなく適用することになりました。

于 2012-05-11T14:58:02.367 に答える