12

ここやGoogleなどで答えを探していましたが、これを完全に釘付けにすることはできません.

ID が #pin01 の画像があります。これは、マップの画像 (Google マップを考えてください) に着陸する、div 内で下にアニメーション化したマップ上のピンです。

うまく機能する私の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 の動きは保持されません。効果に top: を配置しようとしましたが、うまくいきませんでした。

これらを組み合わせたり、入れ子にしたりしてみましたが、何も機能していないようです。

誰かが他の考えを持っている場合は、これを適切に機能させる方法を知りたい. 単純な調整だと思いますが、それを理解できないようです。

解決

削除:

$('#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'});

フェードを行うためのよりクリーンな方法があるかもしれませんが、これは私の例ではうまくいきました。

4

2 に答える 2

16

試してみてください:

$('#pin01').show().animate({ top: 305 }, {duration: 1000, easing: 'easeOutBounce'});
于 2012-04-20T17:56:00.930 に答える
0

アニメーション機能marginTopの代わりに使用できます。top

于 2012-04-20T18:18:27.187 に答える