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

Отключить анимацию CSS3 С помощью jQuery?

У меня есть объект, который имеет анимацию при загрузке страницы:

.logo-mark {
        -webkit-animation: spin 2s 1 cubic-bezier(0.000, 0.000, 0.230, 1.000);
            -moz-animation: spin 2s 1 cubic-bezier(0.000, 0.000, 0.230, 1.000);
            -ms-animation: spin 2s 1 cubic-bezier(0.000, 0.000, 0.230, 1.000);
            animation: spin 2s 1 cubic-bezier(0.000, 0.000, 0.230, 1.000);
    }

В определенное время я хочу, чтобы JavaScript включал определенную анимацию, которая происходит бесконечно, пока JavaScript не остановит анимацию. Поэтому я просто создал другой класс с именем .logo-load, а в определенные моменты jQuery делает addClass и removeClass.

.logo-loading {
            -webkit-animation: spin 4s infinite linear;
                -moz-animation: spin 4s infinite linear;
                -ms-animation: spin 4s infinite linear;
                animation: spin 4s infinite linear;
        }

Однако, когда JavaScript удаляет класс, объект просто продолжает вращаться, несмотря ни на что. Могу ли я здесь что-нибудь сделать?

4b9b3361

Ответ 1

Вы можете просто переопределить эти свойства CSS с помощью "none" для каждой анимации

function stopAnimation(element)
{
    $(element).css("-webkit-animation", "none");
    $(element).css("-moz-animation", "none");
    $(element).css("-ms-animation", "none");
    $(element).css("animation", "none");
}

чтобы вы могли остановить анимацию, просто вызвав эту функцию...

Ответ 2

Если вы хотите приостановить анимацию (а затем возобновить ее с момента ее приостановки), вы можете переключить ее состояние воспроизведения с помощью этого свойства CSS:

.paused {
   -ms-animation-play-state:paused;
   -o-animation-play-state:paused;
   -moz-animation-play-state:paused;
   -webkit-animation-play-state:paused;
  animation-play-state: paused;
}

Затем вы можете использовать jquery для переключения приостановленного класса:

$("#animatedElement").click(function(e){ 
  $(e.currentTarget).toggleClass("paused"); 
});

Смотрите этот пример, который фактически останавливается без javascript: http://jsfiddle.net/fRzwS/

И этот пост на forrst со скрипки автор: http://forrst.com/posts/How_To_Pause_CSS_Animations-0p7

Ответ 3

Это работает так, как вы ожидаете в Firefox, см. этот jsFiddle:

Итак, я изменил ваш пример (только сохранил -moz- как Firefox) до 1 сек., я начинаю вращение, а затем завершаю его после 3.6. Все отлично работает, Firefox 11.0 на Xubuntu 11.10.

Если вы не используете Firefox, можете ли вы попробовать в Firefox подтвердить, что они (как ваши, так и мои примеры) работают там на вашей машине? Это может быть специфическая для браузера функция.