回答:
jQueryのアニメーション関数を使用して不透明度を自分で変更し、表示に影響を与えないようにすることができます。
$("div").fadeIn().css("display","inline-block");
$("div").fadeIn().css("display","");
$("div").fadeIn("400", function(){ $(this).css("display","inline-block"); });
フェードインが終了すると、display:inline-blockが確実に実行される
Philの良いアイデアを具体化するために、次のfadeIn()は、各要素にフェードをロードし、クラス.fadedを順番に、animate()に変換します。
古い:
$(".faded").each(function(i) {
$(this).delay(i * 300).fadeIn();
});
新着:
$(".faded").each(function(i) {
$(this).delay(i * 300).css('opacity',0).animate({'opacity': 1}, 500);
});
それが私のような別のjQuery newbに役立つことを願っています:)それを行うより良い方法がある場合は、教えてください!
枕の答えがうまくいかなかったので、私の解決策は
<div id="div" style="display: none">Some content</div>
$('#div').css('display', 'inline-block').hide().fadeIn();
hide
すぐに適用されますdisplay: none
が、その前に、現在の表示値をjQueryデータキャッシュに保存します。これは、後続のアニメーション呼び出しによって復元されます。
したがって、div
は静的にとして定義されていdisplay: none
ます。次に、に設定されinline-block
、すぐに非表示になります。inline-block
よると、jQueryのドキュメントのために.show()
、
要素の表示値がインラインの場合、非表示にして表示すると、要素は再びインラインで表示されます。
したがって、この問題に対する私の解決策は、CSSルールをクラスの表示に適用することでした:要素のインラインブロック、次に、表示を適用する「非表示」と呼ばれる別のクラスを追加しました。.show()
エレメントをオンにすると、インラインで表示されました。
#el{display:inline-block;display:none;}
して実行$('#el').fadeIn();
すると、インラインブロックが取得されるときにもこれが機能するはずです。しかし、そうではありません。
これはdisplay:none
、cssによるプリセットでも機能します。使用する
$('#element').fadeIn().addClass('displaytype');
(そしてまた$('#element').fadeOut().removeClass('displaytype');
)
CSSでの設定:
#element.displaytype{display:inline-block;}
私はこれを回避策と見なします。設定fadeIn()
すると、最後のルールが削除display:none
される#element{display:inline-block;display:none;}
ように機能するはずですが、誤動作して両方が削除されます。