Я пытаюсь установить значение преобразования @keyframe программно.
.spin {
animation-name: spin;
animation-duration: 3s;
animation-timing-function: ease-out;
animation-fill-mode: both;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(1665deg);
}
Мне нужно изменить значение 100% на значение, которое я генерирую с помощью JavaScript.
spinWheel() {
let segments = [], segmentSize, winningSegment, app = this;
app.spin = 'spin';
//each segment
segmentSize = 360 / 6;
for(let i = 0; i <= 5; i++)
{
segments[i] = i*segmentSize;
}
winningSegment = Math.floor(Math.random() * 6);
let start = winningSegment === 0 ? 0 : segments[winningSegment];
let end = winningSegment === 5 ? 360 : segments[winningSegment+1];
let winningArea = {start: start , end: end };
app.start = 0;
app.end = (360 * Math.floor(Math.random() * (30 - 15 + 1) + 15)) + Math.floor(Math.random() * (winningArea.end - winningArea.start + 1) + winningArea.start);
}
Итак, когда запускается метод spinWheel()
100% {
transform: rotate(end);
}
Изменится на значение app.end.
Я просто не могу понять, как это сделать. Любая помощь очень ценится.
открыт для всего, что приводит к решению, я использую VueJs (потому что я использую бэкэнд laravel, и vue прилагается к нему), если для этого есть что-то доступное. Я бы не возражал против чего-то, что запускает события, когда переход также завершен, поскольку мне это понадобится в ближайшее время.
Тогда обязательно взгляните на API веб-анимации. Он позволяет создавать анимацию на основе ключевых кадров с использованием element.animate(keyframes, options), который возвращает экземпляр Animation, который генерирует событие finish. Похоже, идеально подходит.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Создание или изменение ключевых кадров в JavaScript проблематично. Готовы ли вы использовать API веб-анимации? Вам понадобится полифил для любых браузеров, отличных от Chrome, но есть хороший полифил.