問題は、フェージング効果がすべて同時に発生しようとしていることです。コールバックを使用すると、順序をより厳密に制御できます。このJS Fiddle、または以下の同一のコードを参照してください。フェードが同時に起こるとなぜ醜いのですか?ブロックは通常の流れで自然に積み上げられます。フェードアウトの過程にある場合でも、フロー内のスペースを占有します。display:none
フェードが有効になるとき、フェードの最後にそのスペースを解放するだけです。交換用のボックスがそれをフェードするとき、最終的なスペースの解放まで、通常の位置よりも下に配置されます。それが醜い方法でトップに戻ってくるときです。フェードトグルに関する jQuery のドキュメントを確認し、コールバック セクションを確認してください (フェードインとフェードアウトは同じように機能します)。
<div id="hello"> hello world! </div>
<div id="goodbye"> goodbye world! </div>
Javascript:
$("#hello").click(function(){
$(this).fadeToggle("slow", function(){
$("#goodbye").fadeToggle("slow"); //Here is a callback
});
});
$("#goodbye").click(function(){
$(this).fadeToggle("slow", function(){
$("#hello").fadeToggle("slow") //Here is a callback
}) ;
});
CSS:
div{
width:100px;
height:100px;
}
#hello{
background-color:red ;
}
#goodbye{
background-color:blue;
display:none;
}