ページにアイコンの行があり、ユーザーがカーソルを合わせたときに波のアニメーション効果を作成したいと考えています。
私は初心者のためにこの基本的なコードを使用しています:
$('#icons > li')
.hover(function() {
$(this).animate({
'top': (-1 * hover_distance)
}, hover_speed);
}, function() {
$(this).animate({
'top': 0
}, hover_speed);
})
;
そして、それはOKに見えます。ただし、1 つの問題があります。カーソルを必死にアイコンの上に移動すると、すべてのアイコンのアニメーション キューが多くのアクション (上、下、上、下、上、下など) でいっぱいになり、アイコンが上に移動し、アイコンを操作するのをやめても、何度もダウンします。
アイコンが 1 サイクル (上下) だけ完了してからアニメーションを停止したい。このための最もエレガントな(短く、シンプルで、軽い)ソリューションを探しています。
PS: また、 stop()だけを使用することはできません。これは、「波の効果」を防ぐためです (つまり、カーソルをアイコン上で 1 回の速いストロークで移動すると、実際の波のように、それに応じてアイコンが上下に移動します)。
PPS: これが JS-Fiddle です: http://jsfiddle.net/nZqLy/3/