< /div>
このようにして、最初の写真が 2 番目の写真を覆い、特殊効果を実現するには最初の写真をフェードインおよびフェードアウトするだけです。そこで、hover、fadeIn、fadeOut を使って
$(document).ready(function () {
$("div").hover(
function () { $("#1").fadeOut(1000); },
function () { $("#1").fadeIn(1000); }
)
});
しかし、すぐに動かないと、この問題が発生します。マウスを止めずに出し入れします。その後、アニメーションはすべてキューに入り、アニメーションは動き続けますが、これは非常に見苦しいものです。
それで私は使用する予定です: dequeue()、定義: キューの先頭からキューに入れられた関数を削除して実行します。
出入りを続けると、前の操作になると思います。キュー内のアニメーションが削除されました。これにより、最終的なアニメーションが実行されます。
function () { $("#1 ").dequeue().fadeOut(1000); },
function () { $("#1").dequeue().fadeIn(1000); }
しかし、さらに厄介な状況 マウスを出し入れし続けると、画像が消えたり、元に戻らなかったりすることがありました。どうしたの?
次に、stop() を使用することを考えました。定義:
指定されたすべての要素で現在実行中のアニメーションをすべて停止します。
アニメーションが実行キューに入れられている場合、それらはすぐに開始されます。
function () { $("#1 ").stop ().fadeOut(1000); },
function () { $("#1").stop().fadeIn(1000); }
停止します以前のすべてのキュー、ついに機能します!しかし、絵は半分に消えて動かなくなりました! 2枚の写真を重ね合わせたような感じです。
また何が起こったのですか?
stopでパラメータを追加するまでは、正常に画像が表示されます。
Clearqueue (オプション) boolean
true に設定すると、キューをクリアします。アニメーションはすぐに終了できます。
Gotoend (オプション) boolean
現在実行中のアニメーションを即座に完了させ、表示と非表示の元のスタイルをリセットし、コールバック関数を呼び出します。
function () { $("#1 ").stop(true,true).fadeOut(1000); },
function () { $("#1").stop(true, true).fadeIn(1000); }
しかし、実行完了後に突然画像全体が表示され、フェードイン、フェードアウトなどの効果が無い状況が発生します。
アニメイトを使うしか方法はありません。
function () { $("#1").stop().animate({ 'opacity': 0 }, 1000) },
function () { $("#1" ).stop().animate({'opacity':1}, 1000); }
または:
function () { $("#1").animate({ 'opacity': 0 }, { キュー: false、期間: 1000 }); },
function () { $("#1").animate({ 'opacity': 1 }, { キュー: false、期間: 1000 });
このようにして、私たちが望んでいた完璧な効果を実現しました。
要約すると、stop 理論と dequeue 理論を使用することは可能ですが、なぜうまくいかないのでしょうか?よくわかりません。おそらく jQuery ライブラリに問題があると思われます。
問題を見つけるには、元のファイルを確認する必要があります。ただし、今後フェードインとフェードアウトを使用する場合は十分に注意してください。もちろん、オーク ロッジの友人による
《
JQuery Implementation of Image Carousel Effect》 は間違いなく良い例です。時間を 2000 年に変更して初めて、遅延に気づきました。
意図的にトラブルを探している私のような人だけがこれを行うでしょう。他の人がこれほど長い間設定できるでしょうか?興味のある友人は、オーク ロッジに行って、それについて学ぶことができます。これは、シンプルで美しく、実用的な例です。