Вы не можете следовать CSS циклам анимации из Javascript. Однако вы можете подделать это, используя таймер. Поскольку ваш цикл анимации занимает 6 секунд, вы можете использовать 6-секундный тайм-аут, чтобы остановить анимацию в конце цикла.
Некоторые дополнительные вещи, чтобы предотвратить мерцание в начале и в конце:
- Установите также начальное преобразование в поле
- По истечении тайм-аута добавьте новый класс, который имеет преобразование последнего ключевого кадра.
Вот как:
var $box = $('.box');
$box.addClass('animation');
setTimeout(function() {
$box.addClass('end-state');
$box.removeClass('animation');
}, 6000);
.box {
width: 100px;
height: 100px;
background: #000;
transform: scale(.3); /*transformation from the first keyframe*/
}
.end-state {
/*transformation and other properties from the last keyframe*/
transform: scale(1) rotate(180deg);
background: blue;
}
.animation {
animation: animation 6s ease 0s infinite;
}
@keyframes animation {
0% {
transform: scale(.3);
}
50% {
transform: scale(.6) rotate(-45deg);
background: red;
}
100% {
transform: scale(1) rotate(180deg);
background: blue;
}
}
<div class="box"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>