Mam kilka sortables z animacjami klatek CSS3 zdefiniowanymi na nich przez klasę. Przy sortowaniu, zauważyłem dziwne zachowanie jak widać w this Fiddle.jQuery UI sortable wyzwala animację css3 na sortowanie
.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%);
}
}
Inicjowanie jQuery sortable.
$(function() {
$("#sortable").sortable();
});
animacja wyzwala na rodzaj start
i stop
, natomiast klasa animacja nie jest ponownie zastosować. Wygląda na to, że nastąpił jakiś proces zmian powodowany przez modyfikację DOM przez jQuery. Ale w jaki sposób aktywuje animację i czy można jej uniknąć? Celem jest brak animacji podczas sortowania, przy zachowaniu klasy.
Odpowiedź: Ma to sens, ponieważ pozycja jesteśmy przeciągając wokół jest tylko klonem, to ożywia na start
bo włóż clone do DOM. Animacja pojawiająca się na stop
ma tę samą przyczynę, ponieważ klon jest następnie dołączany do nowej pozycji, ponownie wyzwalając ponowne wlanie dokumentu.
Muszę zachować klasę, więc usunięcie jej nie jest rozwiązaniem. Ale twoja odpowiedź jest naprawdę bliska odpowiedzi, której szukam, wyjaśniając, dlaczego powtarza się animacja. Ma to sens, ponieważ przedmiot, który sortujemy, jest po prostu klonem, animuje się na początku, ponieważ wstawiamy klon do DOM. Animacja pojawiająca się na 'stop' ma tę samą przyczynę, ponieważ klon jest następnie dołączany do nowej pozycji, ponownie wywołując reflow dokumentu. Dzięki! – Tim