CSS3-Übergang zum Hervorheben neuer Elemente, die in JQuery erstellt wurden
Lesezeit: 4 Minuten
Ich möchte einen CSS3-Farbübergang verwenden, um einen Highlight-Fading-Farbeffekt (gelb zu transparent) auf neue Elemente anzuwenden, die mit JQuery an das Markup angehängt werden.
Wenn ich auf den Link klicke, wird das neue Element erstellt. Seine Klasse ist “neu” (Hintergrundfarbe gelb) und wird an das HTML-Markup angehängt. Ich sollte in der Lage sein, die “neue” Klasse sofort zu entfernen, um den Übergang der Hintergrundfarbe zu transparent (oder einer anderen Farbe) auszulösen. Ich mache es offensichtlich falsch, da die Hintergrundfarbe des neuen Elements sofort transparent dargestellt wird, ohne Übergangseffekt. Ich weiß, dass ich dies in der JQuery-Benutzeroberfläche tun kann, aber ich möchte CSS3-Übergänge verwenden.
Das ist viel besser und erfordert keine Fummelei auf der Javascript-Seite.
– Brendon Muir
10. Juni 2014 um 21:56 Uhr
Rezigiert
Dein Code ist nahezu perfekt. Sie müssen nur etwas auslösen, damit der Übergang funktioniert. Dies kann durch Hinzufügen einer Codezeile zu Ihrem Skript erfolgen.
$('#add-element').click(function() {
var newElement = $('<div class="new">new element</div>');
$('#content').append(newElement);
// trigger on focus on newly created div
newElement.focus();
newElement.removeClass('new');
});
Sauber und einfach. Ich wusste, dass eine Art Ereignisauslösung erforderlich war, damit der Übergang funktionierte.
– Paulaner
10. Oktober 2012 um 8:58 Uhr
Nach ungefähr 3 Stunden des Versuchs, danke für die Hilfe 🙂 Gibt es eine Erklärung, warum es fokussiert werden muss?
– Jakob Valenta
5. Oktober 2013 um 16:49 Uhr
@JacobValenta Ich kann dazu keine w3c-Spezifikation mehr finden. Grundsätzlich braucht es eine Art von triggering Ereignis/Zustand wie z :active, :checked, :hover usw., damit der Übergang funktioniert. Stellen Sie sich vor, Sie haben 100 Elemente mit angewendetem Übergangseffekt, ohne irgendeine Art von trigger Alle werden sofort nach dem Laden der Seite animiert. Deshalb brauchen Sie etwas zu triggering die Animation bei einem bestimmten Ereignis/Zustand.
– Rezigiert
7. Oktober 2013 um 2:11 Uhr
Vielen Dank! Das macht jetzt Sinn. Prost
– Jakob Valenta
7. Oktober 2013 um 6:50 Uhr
Dies ist die beste Antwort, die ich bei Google gefunden habe, und verdient es, als richtig gekennzeichnet zu werden
– Balaji Viswanath
14. August 2014 um 16:17 Uhr
Es ist ein hässlicher Hack, aber es scheint zu funktionieren. Ich bin sicher, es gibt einen besseren Weg.
Vielen Dank. Es funktioniert auf Chrome, aber es scheint instabil und unberechenbar auf Firefox zu sein.
– Paulaner
10. Oktober 2012 um 8:22 Uhr
@Paulaner Andy hat die richtige Antwort, und darüber denke ich nach. Die Verwendung von 1000 anstelle von 0 ist möglicherweise besser, da Sie den Übergang sehen möchten. 0 blinkt nur die Farbe und verschwindet. Übrigens, ich sehe den Übergang hier nicht mit FF15, stattdessen ist es ein solides Gelb, das noch nicht unterstützt wird? @Andy, ich betrachte das nicht als hack. In dieser speziellen Situation sollte es so funktionieren, da jQuery sofort nach dem Anhängen removeClass ausführte, und deshalb der Übergang sollte nicht gesehen werden.
– Benutzer1643156
10. Oktober 2012 um 8:43 Uhr
Danke Jungs. Rezigned hat gerade eine saubere Lösung gepostet, die für mich perfekt funktioniert.
– Paulaner
10. Oktober 2012 um 8:56 Uhr
@ user1643156 Ja, CSS-Übergänge funktionieren nur, wenn das Element sichtbar ist. daher ist es hier etwas kontraintuitiv, weil er sogar die removeclass in einer zusätzlichen Zeile erstellt hat, anstatt sie mit dem Append zu verketten.
– Andy
10. Oktober 2012 um 9:01 Uhr
11937800cookie-checkCSS3-Übergang zum Hervorheben neuer Elemente, die in JQuery erstellt wurdenyes