私はここやグーグルなどで答えを探し回っていましたが、これを完全に釘付けにすることはできないようです。
IDが#pin01の画像があります。これは、div内でアニメーション化して、マップの画像に着地したマップ上のピンです(Googleマップを考えてください)。
私のJQueryはうまく動作しますが、次のとおりです。
$('#pin01').animate({ opacity: 0}, 0).delay(500);
$('#pin01').animate({ opacity: 1, top: "305px" }, 500);
そして私のHTMLは次のとおりです:
<img src="images/pin_blue.png" id="pin01" />
アニメーションはうまく機能し、ピンはフェードインし、マップにうまくドロップします。私が欲しいのは、divの上から305pxに配置された後のバウンスです。そのため、マップ上にある場合、最後に少しバウンドします。私はこの効果を使用すると思いました:
$('#pin01').effect("bounce", { direction:'down', times:5 }, 300);
最終的なコードは次のようになると思いました:
$('#pin01').animate({ opacity: 0}, 0).delay(500);
$('#pin01').animate({ opacity: 1, top: "305px" }, 500);
$('#pin01').effect("bounce", { direction:'down', times:5 }, 300);
その結果、バウンスが発生しますが、ピンの元の開始位置に戻り、305pxの動きは保持されません。トップを配置してみましたが、効果がありませんでした。
これらを組み合わせたり、入れ子にしたりしてみましたが、何も機能していないようです。
誰か他の考えがある場合は、これを適切に機能させる方法を知りたいと思っています。シンプルなTweakだと思いますが、理解できないようです。
[〜#〜]ソリューション[〜#〜]
削除:
$('#pin01').animate({ opacity: 0}, 0).delay(1000);
$('#pin01').animate({ opacity: 1, top: "350px" }, 500);
以下の回答から両方を1行に置き換えます:
$('#pin01').show().animate({ top: 305 }, {duration: 1000, easing: 'easeOutBounce'});
マップでバウンスの問題を一度解決しました。
フェード機能を追加するために、次のように書きました:
$('#pin01').animate({ opacity: '0' });
$('#pin01').delay(500).show().animate({ top: 305, opacity: '1' }, {duration: 1000, easing: 'easeOutBounce'});
フェードを行うためのよりクリーンな方法があるかもしれませんが、これは私の例ではうまくいきました。
試してみてください:
$('#pin01').show().animate({ top: 305 }, {duration: 1000, easing: 'easeOutBounce'});
アニメーション関数でmarginTop
の代わりにtop
を使用できます。