Je fais une animation CSS à la minute, et dedans je déplace des trucs et je veux qu'elle reste en position finale jusqu'à ce que l'utilisateur éloigne sa souris.
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;
}
Chaque fois que l'animation se termine, elle se répète simplement. Je ne veux que cela se produise une fois et reste où il est jusqu'à ce que l'utilisateur s'éloigne. J'ai essayé d'utiliser la chose suspendue de la spécification, mais cela ne fonctionne pas comme je m'y attendais. Toute aide est appréciée. Merci. :)
Le commentaire suivant a fonctionné pour moi. Merci michael
"Vous devez ajouter le mode de remplissage pour figer l'état de l'animation à la fin de l'animation.
-webkit-animation-fill-mode: forwards;
forwards
laisse l'animation dans l'état de la dernière image
backwards
quitte l'animation au début
Juste au cas où votre animation se réinitialise toujours à la première image, soyez prudent avec le ordre dans lequel vous déclarez le css:
Cela fonctionne bien:
animation: yourAnimationName 1s;
animation-fill-mode: forwards;
Ce ne sera pas (réinitialiser à la première image):
animation-fill-mode: forwards;
animation: yourAnimationName 1s;
Rusé!
Si je comprends bien la question, il semble que vous devez définir l'itération sur "1".
-webkit-animation-iteration-count: 1;
Les animations css3 sont réinitialisées au style par défaut à la fin de l'animation. Vous pouvez essayer quelque chose avec javascript:
Vous pouvez ajouter un eventListener à votre animation, récupérer les styles que vous souhaitez conserver, les appliquer manuellement et supprimer l'animation.
document.getElementById('yourdiv').addEventListener(
'webkitAnimationEnd',
function(){
document.getElementById('yourdiv').style.backgroundPosition = '0px 0px';
document.getElementById('yourdiv').style.webkitAnimationName = 'none';
},
false
);
essaye ça:
-webkit-animation-duration: 10s, 10s;
:)