Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как определить, что анимация закончилась? (https://javascript.ru/forum/events/46807-kak-opredelit-chto-animaciya-zakonchilas.html)

Octane 26.04.2014 01:36

А если поставим начальные значения top и left отличные от 0, callback выполнится через 1 секунду, а не как положено через 5.
В твоем примере resolve выполняется по первому сработавшему animationend, а я пытаюсь сделать событие allNewAnimationsEnd.
Ладно узнали мы имена новых анимаций, можно попробовать дождаться окончания их всех. НО мы не знаем какие из этих анимаций будут выполняться.

Наверное, буду пока что считать getFiniteAnimationName только для новых анимаций, а delay будет:
var delay = Math.max(
    getTransitionTime(style),
    getFiniteAnimationTime(style, newAnimationNames)
);
Интересно, значит все таки 1 animationend гарантированно срабатывает (надеюсь во всех браузерах). Я почему-то был уверен, что если еще и для left поставлю начальное значение 0, то вообще ни одно событие не сработает и callback никогда не выполнится.

melky 26.04.2014 01:46

я там код обновил, глянь его :)

Цитата:

Сообщение от Octane (Сообщение 309319)
А если поставим начальные значения top и left отличные от 0, callback выполнится через 1 секунду, а не как положено через 5.

можно пример на основе текущего codepen?

Цитата:

Сообщение от Octane (Сообщение 309319)
В твоем примере resolve выполняется по первому сработавшему animationend, а я пытаюсь сделать событие allNewAnimationsEnd.

я это дело пофиксил в последней обнове. теперь там список

Цитата:

Сообщение от Octane (Сообщение 309319)
Ладно узнали мы имена новых анимаций, можно попробовать дождаться окончания их всех. НО мы не знаем какие из этих анимаций будут выполняться.

это как? зачем применять анимацию, если она не проигрывается?

Цитата:

Сообщение от Octane (Сообщение 309319)
Интересно, значит все таки 1 animationend гарантированно срабатывает (надеюсь во всех браузерах). Я почему-то был уверен, что если еще и для left поставлю начальное значение 0, то вообще ни одно событие не сработает и callback никогда не выполнится.

там по нескольку раз срабатывает. для каждой анимации один раз

Octane 26.04.2014 02:19

Теперь наоборот ждем 5 сек, вместо 1 сек, если top=0 :)

Цитата:

Сообщение от melky
это как? зачем применять анимацию, если она не проигрывается?

Как в примере, который разбираем, одним классом добавляется 2 анимации, одна из которых выполняется.

----------------------
Цитата:

Сообщение от Octane
http://learn.javascript.ru/play/hOiFcb
Произойдет только одна пара событий animationstart и animationend

Наврал. Ненавижу группировку одинаковых сообщений в консоли!!!11 :-E Все таки события animation всегда происходят, в отличие от transition. В этом была моя основная путаница. Да, getFiniteAnimationTime тогда можно выкинуть.


Часовой пояс GMT +3, время: 08:14.