slideDown() のような Jquery アニメーションを実行すると、いくつかの要素固有の css プロパティが特定の間隔で更新されるように設定されているように見えます。アニメーションが完了すると、これらのプロパティは設定解除され、表示プロパティは単純に auto またはに設定されます。なんでもいい。少なくとも firebug では、これらの一時的なプロパティは表示されなくなりました。
私が遭遇した問題は、stop() でスライド ダウンを停止するシナリオです。その後、要素には現在の一時的な css 値が残されます。しなければならないのでこれは問題ありませんが、少し時期尚早にスライドを元に戻すことにしたため、スライドダウンを停止したとしましょう。次のようになります。
$(this).slideDown(2000)
//The below events is not in queue but will rather start execute almost
simultaneously as the above line. (dont remember the exact syntax)
$(this).delay(1000).stop().slideUp(2000)
上記のコードはあまり意味をなさないかもしれませんが、ポイントは次のとおりです
。1 秒間下にスライドした後、アニメーションは停止し、上にスライドし始めます。魅力のように機能します。
しかし!!!そして、ここに問題があります。スライドが戻ると、要素の css プロパティは、slideDown() アニメーション (stop() が呼び出されたとき) に 1000 ミリ秒あった正確な値にリセットされます。ここで、次を実行しようとすると:
$(this).slideDown(2000)
以前のslideDownが中止されたポイントまでスライドダウンし、それ以上半分の速度ではありません(約半分の高さで同じ時間を使用するため)。これは、css プロパティが表示どおりに保存されたためです。しかし、それは特に望んでいるわけではありません。もちろん今回はずーっとずらしていきたいです。
すべてがすぐに壊れる可能性があると予測するのは難しい UI の相互作用が原因です。使用するアニメーションが長いほど、このようなことが起こるリスクが高くなります。
これはバグと見なされますか、それとも何か間違ったことをしていますか? それとも、サポートされていない機能なのでしょうか?
コールバック関数を使用して css プロパティをリセットできると思いますが、使用するアニメーションに応じて、異なる css プロパティを使用してレンダリングするため、背中を覆うことはそれほど派手なソリューションにはなりません。