Невозможно остановить анимацию в конце одного цикла

Я делаю анимацию CSS за минуту, и в ней я перемещаю вещи и хочу, чтобы она оставалась в конечной позиции, пока пользователь не отталкивает свою мышь.

body {
    background: url('osx.jpg');
    padding: 0;
    margin: 0;
    line-height: 60px;
}

@-webkit-keyframes item1 {
    0% { bottom: -120px; left: 0px; }
    10% { bottom: -40px; left: 10px; -webkit-transform: rotate(5deg); }
    100% { bottom: -40px; left: 10px; -webkit-transform: rotate(5deg); }
    }

@-webkit-keyframes item2 {
    0% { bottom: -120px; left: 0px; }
    10% { bottom: 60px; left: 20px; -webkit-transform: rotate(7deg); }
    100% { bottom: 60px; left: 20px; -webkit-transform: rotate(7deg); }
}

@-webkit-keyframes item3 {
    0% { bottom: -120px; left: 0px; }
    10% { bottom: 160px; left: 30px; -webkit-transform: rotate(9deg); }
    100% { bottom: 160px; left: 30px; -webkit-transform: rotate(9deg); }
}

    div {
    position: relative;
    }
#folder {
    width: 120px;
    margin: 0px auto;
}

#folder > div {
    position: absolute; 
}

#folder:hover > div:nth-of-type(1) {
    -webkit-animation-name: item1;
    -webkit-animation-duration: 10s;
}

#folder:hover > div:nth-of-type(2) {
    -webkit-animation-name: item2;
    -webkit-animation-duration: 10s;
}

#folder:hover > div:nth-of-type(3) {
    -webkit-animation-name: item3;
    -webkit-animation-duration: 10s;
}

Всякий раз, когда анимация заканчивается, она просто повторяется. Я только хочу, чтобы это случилось однажды и оставалось там, где оно находится, пока пользователь не уйдет. Я попытался использовать приостановленную вещь из спецификации, но она не работает, как я ожидал. Любая помощь приветствуется. Благодарю.:)

Ответ 1

Следующий комментарий работал у меня. Спасибо michael

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

-webkit-animation-fill-mode: forwards;

forwards оставляет анимацию в состоянии последнего кадра

backwards оставляет анимацию в начале

Ответ 2

На всякий случай, когда ваша анимация все еще сбрасывается в первый кадр, будьте осторожны с порядком, в котором вы объявляете css:

Это нормально работает:

    animation: yourAnimationName 1s;
    animation-fill-mode: forwards;

Это не будет (reset для первого кадра):

    animation-fill-mode: forwards;
    animation: yourAnimationName 1s;

Tricky!

Ответ 3

Если я правильно понял вопрос, похоже, вам нужно установить итерацию в '1'.

-webkit-animation-iteration-count: 1;

Ответ 4

анимация css3 reset для стиля по умолчанию в конце анимации. Вы можете попробовать что-то с javascript:

Вы можете добавить eventListener в свою анимацию, получить стили, которые хотите сохранить, применить их вручную и удалить анимацию.

document.getElementById('yourdiv').addEventListener(
    'webkitAnimationEnd',
    function(){
        document.getElementById('yourdiv').style.backgroundPosition = '0px 0px';
        document.getElementById('yourdiv').style.webkitAnimationName = 'none';
    }, 
    false
);

Ответ 5

попробуйте следующее:

-webkit-animation-duration: 10s, 10s;

:)