Ich habe ein paar sortierbare mit CSS3 Keyframe Animationen über eine Klasse definiert. Beim Sortieren habe ich seltsames Verhalten bemerkt, wie in this Fiddle.jQuery UI sortierbare Auslöser css3 Animation auf Sortierung
.slideLeft {
animation-name: slideLeft;
-webkit-animation-name: slideLeft;
animation-duration: 1s;
-webkit-animation-duration: 1s;
animation-timing-function: ease-in-out;
-webkit-animation-timing-function: ease-in-out;
visibility: visible !important;
}
@keyframes slideLeft {
0% {
transform: translateX(150%);
}
50%{
transform: translateX(-8%);
}
65%{
transform: translateX(4%);
}
80%{
transform: translateX(-4%);
}
95%{
transform: translateX(2%);
}
100% {
transform: translateX(0%);
}
}
Initiieren jQuery sortierbar gesehen.
$(function() {
$("#sortable").sortable();
});
Die Animation löst auf Art start
und stop
, während der Animationsklasse nicht erneut angewendet wird. Es scheint so, als ob es eine Art Reflow gibt, der dadurch verursacht wird, dass jQuery das DOM verändert. Aber wie löst es die Animation aus und kann sie vermieden werden? Das Ziel ist, beim Sortieren keine Animation zu haben, während die Klasse beibehalten wird.
Antwort: Es macht Sinn, da das Element wir um sind Schleppen nur ein Klon ist, belebt es auf start
, weil wir den Klon auf das DOM einfügen. Die Animation, die unter stop
auftritt, hat die gleiche Ursache, da der Klon dann an seine neue Position angehängt wird, was wiederum einen Reflow des Dokuments auslöst.
Ich muss die Klasse behalten, also ist das Entfernen keine Lösung. Aber deine Antwort ist wirklich nah an der Antwort, die ich suche, und erklärt, warum die Animation wiederholt wird. Es macht Sinn, da das Objekt, das wir sortieren, nur ein Klon ist, animiert es auf "Start", weil wir den Klon in das DOM einfügen. Die Animation, die bei "stop" auftritt, hat dieselbe Ursache, da der Klon dann an seine neue Position angehängt wird, was wiederum einen Reflow des Dokuments auslöst. Vielen Dank! – Tim