Сообщение от melky
|
чисто тема на рассуждение?
|
да, больше интересует возможность решения
Сообщение от melky
|
Можно проверить по computedStyle одного из свойств, которое участвует в анимации. Определить, какое свойство участвует, можно по keyframesRule анимации.. а это keyframesRule можно найти из animationName.
|
Проверять свойства, измененные в keyframes не прокатит, над элементом мог произойти еще и transition.
Вообще хотелось бы универсальное решение, например, задачи: добавить класс элементу, если над этим элементом не происходит анимация, при условии, что раньше об этом элементе мы ничего не знали. Или хотя бы элементарное: вызвать callback, когда все анимации закончились.
Я знаю, что из-за проблем с контролем CSS анимаций, например, в jQuery animate до сих пор никак не используются CSS transition и animation.
Например, для transition можно посчитать время и запустить callback через setTimeout, как это сделано в плагине
https://github.com/ai/transition-events
Очень удобно, использовать метод addClass, возвращающий promise, которое fulfill'ется, когда все CSS переходы закончены:
addClass(element, "trans").then(doSomething)
если в качестве value будет передаваться элемент, можно строить такие очереди:
addClass(document.query(".some"), "trans1").then(function (element) {
doSomething1();
return addClass(element, "trans2");
}).then(function (element) {
doSomething2();
return addClass(element, "trans3");
}).then(function (element) {
doSomething3();
});
Для браузеров, не поддерживающих transition, сразу выполнять действия так, как будто
transition-duration + transition-delay = 0
А вот с animation уже такое не прокатит.