Вы можете сделать это с парой :not(:hover)
псевдокласс , которая запускает animation
после того, как элемент равен "unhovered" , вместес элементом-оберткой , чей animation
в противоположном направлении (-
) обнуляет один из child при загрузке страницы.
Чтобы избежать каких-либо визуальных отклоненийи при несоответствиях используется и рекомендуется анимация-время из linear
:
.vinyl {
width: 100px;
height: 100px;
border-radius: 50%;
background: repeating-radial-gradient(#fff, #fff 1px, #000 1px, #000 2px);
}
.vinyl:hover {
animation: spin 1s linear infinite;
}
@keyframes spin {
100% {transform: rotate(360deg)}
}
.vinyl:not(:hover) {
animation: stop 2s ease-out;
}
@keyframes stop {
100% {transform: rotate(360deg)}
}
span {
display: inline-block; /* required */
animation: nullify 2s ease-out;
background: #ddd; /* just for demo */
}
@keyframes nullify {
100% {transform: rotate(-360deg)}
}
<span>
<div class="vinyl"></div>
</span>