Подтвердить что ты не робот

Остановка анимации CSS, но ее текущая итерация заканчивается

У меня есть следующий HTML:

<div class="rotate"></div>​

И следующий CSS:

@-webkit-keyframes rotate {
  to { 
    -webkit-transform: rotate(360deg);
  }
}
.rotate {
    width: 100px;
    height: 100px;
    background: red;
    -webkit-animation-name:             rotate;
    -webkit-animation-duration:         5s;
    -webkit-animation-iteration-count:  infinite;
    -webkit-animation-timing-function:  linear;
}​

Я хочу знать, есть ли способ (с использованием JavaScript) остановить анимацию, но пусть она закончит свою текущую итерацию (желательно, изменив один или несколько свойств CSS). Я попытался установить -webkit-animation-name на пустое значение, но это заставляет элемент возвращаться к исходному положению в резком порядке. Я также попытался установить -webkit-animation-iteration-count на 1, но это делает то же самое.

4b9b3361

Ответ 1

Остановите анимацию после получения события animationiteration. Что-то вроде этого (используя jQuery):

CSS

@-webkit-keyframes rotate {
  to {
    -webkit-transform: rotate(360deg);
  }
}
.rotate {
    width: 100px;
    height: 100px;
    background: red;
}
.rotate.anim {
    -webkit-animation-name:             rotate;
    -webkit-animation-duration:         5s;
    -webkit-animation-iteration-count:  infinite;
    -webkit-animation-timing-function:  linear;
}

HTML

<div class="rotate anim">TEST</div>
<input id="stop" type="submit" value="stop it" />

JS (JQuery)

$("#stop").click(function() {
    $(".rotate").one('animationiteration webkitAnimationIteration', function() {
        $(this).removeClass("anim");
    });
});

Fiddle: http://jsfiddle.net/sSYYE/1/

Обратите внимание, что я использую .one здесь (не .on), так что обработчик работает только один раз. Таким образом, анимация позже может быть перезапущена.

Ответ 2

Вы хотите, чтобы анимация останавливалась там, где она заканчивается, не возвращаясь в исходное положение?

Затем вы хотите:

Анимируйте что-то, перемещающееся из одного места в другое, и оставайтесь там: анимация-фасовочно-режим: вперед;

проверьте эту ссылку:

http://www.w3schools.com/cssref/css3_pr_animation-fill-mode.asp