Мне (и, походу, разрабам CSS двига FF, или Webkit) непонятна эта строчка :
Спецификация, от пера горе-поэта
Цитата:
|
The values used for the keyframes and animation properties are snapshotted at the time the animation starts. Changing them during the execution of the animation has no effect.
|
Тут сказано (по русски), что изменять свойства анимации и ключевых кадров нельзя, когда она запущена.
Другими словами - они отпечатываются в памяти, когда анимация стартует, и если мы поменяем значение, скажем, длительности (animation-duration), то эффект будет заметен только после
переприменения :
Цитата:
|
Note also, that changing the value of 'animation-name' does not necessarily restart an animation (e.g., if a list of animations are applied and one is removed from the list, only that animation will stop; The other animations will continue). In order to restart an animation, it must be removed then reapplied.
|
переприменение - это удаление нужной анимации из списка имен активных ("animation-name"), присущих ей параметров (длительность, режим заполнения, и т.д.) и прописывание их заново.
вопрос в том, чем считать
запуск анимации?
<теста нет> нужен? наверняка.
Я добавляю (
применяю) анимацию к элементу в приостановленном состоянии ("animation-play-state: paused")
В этом приостановленном состоянии я меняю длительность, и другие свойства на нужные (например, прописываю длительность на 5 секунд), и запускаю анимацию ("animation-play-state: running")
т.к. задержка ("animation-delay") установлена в "0s", то она стартует сразу же - т.е. на элементах появляется событие "animationstart".
Вопрос в том, что считать start'ом анимации, и является ли он "execution" анимации?
по-русски : Считать ли добавление анимации в приостановленном состоянии к элементу ее стартом?
еще по-русски : Должна ли анимация, примененная в приостановленном состоянии, считаться запущенной?
В спеке по анимаям куча неровностей, но взаимоисключающие параграфы и неточности меня просто бесят.... млять, кто это писал?
Дело в том, что FF и Webkit ведут себя по разному. У первого она разрешает себя изменять, и в итоге я получаю то, что ожидаю, второй - нет!
Вебкит проверялся на свежем Chromium, свежем Chrome Android, и свежайшем Android Browser (версия андроида 4.2.2) - везде одно и то же, т.е. вина самого вебкита.
Причем, неизвестно, как с этим бороться... когда анимация заканчивается, в Chromium я наблюдаю такую картину, когда анимация заканчивается (с событием "animationend")
/*--->*/ getComputedStyle(anim.elements[0]).webkitAnimationDuration
/*
установленная продолжительность анимации для элемента
*/
*!*"2.5s" // <---- ДВЕ С ПОЛОВИНОЙ СЕКУНДЫ */!*
/*--->*/ event.elapsedTime
/*
event - событие "animationend"
elapsedTime - затраченное время на анимацию
*/
*!*0.4000000059604645 /* <---- 400 МИЛЛИСЕКУНД (время по-умолчанию) */ */!*
Кто-то из этих двух гигантов (я про браузеры) неправ. Впоследствии я выясню, кто из них семя, а кто плевел.
Нельзя Просто Сделать тест трудновато, т.к. мой тулкит тоже может быть бажным... но этот момент (описан выше) я проверял несколько раз.