Возможно ли, что requestAnimationFrame
не позволяет другим CSS-переходам работать?
У меня есть функция requestAnimationFrame
, которая должна перемещать позицию контейнера div.Обновление выполняется при каждом запросе кадра.Контейнер div содержит CSS-анимацию:
.container {
...
animation: pulse 2s infinite;
...
}
@keyframes pulse {
0% { transform: scale(1); opacity: 1; }
70% { transform: scale(3); opacity: 0; }
100% { transform: scale(1); opacity: 0; }
}
CSS-анимация работает нормально, если я НЕ вызываю requestAnimationFrame
или не прекращаю делать запросы.
Кроме того, вызывается requestAnimationFrame
также предотвращает работу других переходов, которые находятся за пределами области действия анимированного контейнера, например, ящик навигации, который я использую в качестве бокового меню.
В качестве обходного пути для ящика навигации, который у меня былчтобы обернуть запрос следующим образом:
this.animationId = requestAnimationFrame((timestamp) => {
setTimeout(() => {
this.animateContainer(timestamp)
}, 50)
})
Внутренний setTimeout
используется для задержки следующей анимации, чтобы позволить выдвижному ящику вставиться.
Однако для контейнера это не помогаетанимация.Всякий раз, когда рисуется новый кадр, анимация CSS начинается и сбрасывается с каждым новым кадром, поэтому анимация мерцает.
РЕДАКТИРОВАТЬ:
Почему я использую requestAnimationFrame и CSS-анимацию?
requestAnimationFrame
используется для интерполяции координат маркера на карте.Фактическое положение для X и Y рассчитывается картой в зависимости от холста.Затем анимация CSS используется для анимации этого маркера.