Problem:
In jQuery mit addClass() und removeClass(), wie Animieren Sie Klassenänderungen reibungslos, wie Sie es mit animate() können?
Beispiel 1: Verwenden animate()
$('#someDiv').mouseover(function() { $(this).stop().animate({ backgroundColor: 'blue' }, { duration: 500 }); }).mouseout(function() { $(this).stop().animate({ backgroundColor: 'red' }, { duration: 500 }); });
Dieser Ansatz erfüllt alle gewünschten Kriterien: sanfte Übergänge, keine Animationswarteschlange und korrekte Beschleunigung. Stiländerungen müssen jedoch innerhalb der Animation definiert und von Stylesheets getrennt werden.
Beispiel 2: Verwendung von addClass() und removeClass()
$('#someDiv').addClass('blue').mouseover(function() { // Remove inline styles before applying 'red' class with animation $(this).stop(true, false).removeAttr('style').addClass('red', { duration: 500 }); }).mouseout(function() { // Same for removing 'red' class $(this).stop(true, false).removeAttr('style').removeClass('red', { duration: 500 }); });
Dieser Ansatz erfüllt teilweise die Kriterien, weist sanfte Übergänge auf und vermeidet Warteschlangen. Aufgrund der vorübergehenden Stilerweiterung von jQuery während Klassenanimationen springt die Farbe jedoch bei vorzeitiger Mausbewegung.
Lösung:
Um das gewünschte Verhalten zu erreichen und gleichzeitig Stile in Klassen zu konsolidieren Erwägen Sie die Verwendung von CSS-Übergängen mit jQuery, um Klassenänderungen zu manipulieren.
#someDiv { -webkit-transition: all 0.5s ease; -moz-transition: all 0.5s ease; -o-transition: all 0.5s ease; transition: all 0.5s ease; }
$('#someDiv').addClass('blue').mouseover(function() { $(this).addClass('red'); }).mouseout(function() { $(this).removeClass('red'); });
Das obige ist der detaillierte Inhalt vonWie kann ich Klassenänderungen mit jQuery reibungslos animieren und dabei Animationswarteschlangen und Stilkonflikte vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!