Nie sądzę, że jest to osiągalne przy użyciu tylko animacji CSS. Zakładam, że przejścia CSS nie spełniają twojego przypadku użycia, ponieważ (na przykład) chcesz połączyć ze sobą dwie animacje, użyć wielu zatrzymań, iteracji lub w inny sposób wykorzystać dodatkowe animacje, które dają ci.
Nie znalazłem żadnego sposobu na wywołanie animacji CSS specjalnie po wyjechaniu myszą bez użycia JavaScript do dołączania klas „over” i „out”. Chociaż możesz użyć podstawowej deklaracji CSS, która wyzwoli animację po zakończeniu: hover, ta sama animacja zostanie następnie uruchomiona podczas ładowania strony. Używając klas „over” i „out”, można podzielić definicję na deklarację podstawową (load) i dwie deklaracje wyzwalacza animacji.
CSS dla tego rozwiązania wyglądałoby tak:
.class {
}
.class.out {
animation-name: out;
animation-duration:2s;
}
.class.over {
animation-name: in;
animation-duration:5s;
animation-iteration-count:infinite;
}
@keyframes in {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes out {
from {
transform: rotate(360deg);
}
to {
transform: rotate(0deg);
}
}
I używając JavaScript (składnia jQuery) do powiązania klas ze zdarzeniami:
$(".class").hover(
function () {
$(this).removeClass('out').addClass('over');
},
function () {
$(this).removeClass('over').addClass('out');
}
);