Non credo che ciò sia realizzabile utilizzando solo animazioni CSS. Presumo che le transizioni CSS non soddisfino il tuo caso d'uso, perché (ad esempio) vuoi concatenare due animazioni insieme, utilizzare più fermate, iterazioni o in qualche altro modo sfruttare la potenza aggiuntiva che le animazioni ti garantiscono.
Non ho trovato alcun modo per attivare un'animazione CSS specificamente al mouse-out senza utilizzare JavaScript per allegare classi "over" e "out". Sebbene sia possibile utilizzare la dichiarazione CSS di base per attivare un'animazione quando: hover termina, la stessa animazione verrà quindi eseguita al caricamento della pagina. Usando le classi "over" e "out" puoi dividere la definizione nella dichiarazione di base (load) e nelle due dichiarazioni di attivazione dell'animazione.
Il CSS per questa soluzione sarebbe:
.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);
}
}
E utilizzando JavaScript (sintassi jQuery) per associare le classi agli eventi:
$(".class").hover(
function () {
$(this).removeClass('out').addClass('over');
},
function () {
$(this).removeClass('over').addClass('out');
}
);