Auf meiner Seite befinden sich einige (ca. 30) Dom-Knoten, die unsichtbar hinzugefügt werden sollten und eingeblendet werden, wenn sie vollständig geladen sind.
Die Elemente benötigen eine Anzeige: Inline-Block-Stil.
Ich möchte die Funktion jquery .fadeIn () verwenden. Dies erfordert, dass das Element zunächst eine Anzeige hat: keine; Regel, um es zunächst zu verstecken. Nach dem fadeIn () haben die Elemente natürlich die Standardanzeige: erben;
Wie kann ich die Überblendfunktion mit einem anderen Anzeigewert als "Erben" verwenden?
$("div").fadeIn().css("display","inline-block");
quelle
$("div").fadeIn().css("display","");
$("div").fadeIn("400", function(){ $(this).css("display","inline-block"); });
um sicher zu sein, dass Anzeige: Inline-Block ist fertig, wenn das Fadein beendet istUm Phils gute Idee zu konkretisieren, hier ein fadeIn (), das Fades in jedes Element mit der Klasse .faded lädt, die wiederum in animate () konvertiert wurde:
Alt:
Neu:
Hoffe das hilft einem anderen jQuery-Neuling wie mir :) Wenn es einen besseren Weg gibt, sag es uns bitte!
quelle
Makuras Antwort hat bei mir nicht funktioniert, also war meine Lösung
hide
display: none
Wird sofort angewendet , speichert jedoch zuvor den aktuellen Anzeigewert im jQuery-Datencache, der durch die nachfolgenden Animationsaufrufe wiederhergestellt wird.Die
div
Starts sind also statisch definiert alsdisplay: none
. Dann wird es auf gesetztinline-block
und sofort ausgeblendet, um wieder eingeblendet zu werdeninline-block
quelle
Laut den jQuery-Dokumenten für
.show()
,Meine Lösung für dieses Problem bestand darin, eine CSS-Regel auf eine Klassenanzeige anzuwenden: Inline-Block auf das Element, dann fügte ich eine weitere Klasse namens "hide" hinzu, die display anwendet: none; Als ich
.show()
auf dem Element war, zeigte es Inline.quelle
#el{display:inline-block;display:none;}
und dann ausführen, erhalten$('#el').fadeIn();
Sie Inline-Block. Aber das tut es nicht.Dies funktioniert auch mit
display:none
Preset von CSS. Verwenden(und auch
$('#element').fadeOut().removeClass('displaytype');
)mit Setup in CSS:
Ich halte dies für eine Problemumgehung, da ich glaube
fadeIn()
, dass sie funktionieren sollte, damit nur die letzte Regel entfernt wird -display:none
wenn#element{display:inline-block;display:none;}
diese Option aktiviert ist, werden jedoch beide fehlerhaft entfernt.quelle