Одна из идей - просто использовать несколько анимаций.Конечно, если вы хотите 100+ итераций, это не будет лучшим решением, если вы не подумаете о SASS / LESS для генерации кода.
Вот пример.Задержка каждого должна быть задержка + длительность предыдущего
.box {
width: 50px;
height: 50px;
margin:50px;
background: red;
animation:
shoot-bullet 100ms linear 0,
shoot-bullet 400ms linear 100ms reverse,
shoot-bullet 800ms linear 500ms,
shoot-bullet 1200ms linear 1300ms reverse,
shoot-bullet 1600ms linear 2500ms,
shoot-bullet 2000ms linear 4100ms reverse,
shoot-bullet 2400ms linear 6100ms;
}
@keyframes shoot-bullet {
0% {
transform: scale(1.8, 0.8)
}
100% {
transform: scale(1, 1)
}
}
<div class="box"></div>
Чтобы избежать использования реверса, сделайте анимацию, чтобы первое и последнее состояние были одинаковыми:
.box {
width: 50px;
height: 50px;
margin:50px;
background: red;
animation:
shoot-bullet 100ms linear 0,
shoot-bullet 400ms linear 100ms,
shoot-bullet 800ms linear 500ms,
shoot-bullet 1200ms linear 1300ms,
shoot-bullet 1600ms linear 2500ms,
shoot-bullet 2000ms linear 4100ms,
shoot-bullet 2400ms linear 6100ms;
}
@keyframes shoot-bullet {
0%,100% {
transform: scale(1, 1)
}
50% {
transform: scale(1.8, 0.8)
}
}
<div class="box"></div>