No creo que esto se pueda lograr usando solo animaciones CSS. Supongo que las transiciones CSS no cumplen con su caso de uso, porque (por ejemplo) desea encadenar dos animaciones juntas, usar múltiples paradas, iteraciones o de alguna otra manera explotar la potencia adicional que le otorgan las animaciones.
No he encontrado ninguna forma de activar una animación CSS específicamente al sacar el mouse sin usar JavaScript para adjuntar clases "over" y "out". Aunque puede utilizar la declaración CSS base para activar una animación cuando finaliza: hover, esa misma animación se ejecutará al cargar la página. Usando las clases "over" y "out", puede dividir la definición en la declaración base (carga) y las dos declaraciones de activación de animación.
El CSS para esta solución sería:
.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);
}
}
Y usando JavaScript (sintaxis jQuery) para vincular las clases a los eventos:
$(".class").hover(
function () {
$(this).removeClass('out').addClass('over');
},
function () {
$(this).removeClass('over').addClass('out');
}
);