これは、アニメーション シーケンスに基づく実用的なソリューションです。
この 実用的なフィドルの例を参照してください!
HTML
<div id="circle"></div>
CSS は Fiddle で正規化されていますが、関連性はありません
html, body {
width: 100%;
height: 100%;
}
#circle {
width: 20px;
height: 20px;
background-color: #444;
border: 1px solid #212121;
border-radius: 10px;
position: absolute;
top: 300px;
left: 300px;
}
jQuery プラグインが必要です。以下の.watch()
リンクを参照してください
// initial values to your variables
var start = 0,
stopRight = 1000,
downRight = 300,
leftRight = 300;
// your code as it was
$('#circle').animate({'left': (start)+'px'},'slow').fadeIn('slow', function(){
$(this).animate({'left': '+='+(stopRight)+'px'}, 2000, function(){
$(this).animate({'top': '+='+(downRight)+'px'}, 2000, function(){
$(this).animate({'left': '-='+(leftRight)+'px'}, 2000, function(){});
});
});
});
// the code to make it all happen!
$('#circle').watch("left,top", function() {
$("html, body").animate({
scrollTop : $('#circle').offset().top,
scrollLeft : $('#circle').offset().left,
}, 20);
}, 100);
使用プラグイン
jQuery CSS プロパティ監視プラグイン
これが行うことは、要素の動きを追跡し、スクロールバーを操作して常に表示されるようにすることです。
jQuery .scrollTop() 一致した要素のセットの最初の要素のスクロール バーの現在の垂直位置を取得します。
jQuery .scrollLeft() 一致した要素のセットの最初の要素のスクロール バーの現在の水平位置を取得します。
jQuery .offset() ドキュメントを基準にして、一致した要素のセット内の最初の要素の現在の座標を取得します。