J'exécute une animation sur certains éléments définis opacity: 0;
dans le CSS. La classe d'animation est appliquée surClick et, à l'aide d'images clés, elle change l'opacité de 0
à 1
(entre autres).
Malheureusement, lorsque l'animation est terminée, les éléments reviennent à opacity: 0
(dans Firefox et Chrome). Ma pensée naturelle serait que les éléments animés maintiennent l'état final, remplaçant leurs propriétés d'origine. N'est-ce pas vrai? Sinon, comment puis-je faire en sorte que l'élément le fasse?
Le code (versions préfixées non incluses):
@keyframes bubble {
0% { transform:scale(0.5); opacity:0.0; }
50% { transform:scale(1.2); opacity:0.5; }
100% { transform:scale(1.0); opacity:1.0; }
}
Réponses:
Essayez d'ajouter
animation-fill-mode: forwards;
. Par exemple, comme ceci:la source
forwards
valeur de laanimation-fill-mode
propriété garantit que l'élément contiendrait le dernier état d'image clé de l'animation une fois l'animation terminée. par exemple, si votre animation passewidth
de 0 à 100 pixels, cette propriété garantit que l'élément reste large de 100 pixels après la fin de l'animation.100% / to
point@keyframe
sinon cela ne fonctionnera pas.Si vous utilisez plus d'attributs d'animation, le raccourci est le suivant:
Cela donne:
2s
duréelinear
fonction de synchronisation0.5s
retard1
nombre d'itérations (peut être infini)normal
directionforwards
fill-mode (défini à l'envers si vous voulez avoir la compatibilité pour utiliser la position finale comme état final)la source
SI VOUS N'UTILISEZ PAS LA VERSION À MAIN COURTE: Assurez-vous que
animation-fill-mode: forwards
c'est APRÈS la déclaration d'animation ou cela ne fonctionnera pas ...contre
la source
Utilisez le mode d' animation-remplissage: vers l'avant;
L'élément conservera les valeurs de style définies par la dernière image clé (dépend de l'animation-direction et de l'animation-itération-count).
Remarque: La règle @keyframes n'est pas prise en charge dans Internet Explorer 9 et les versions antérieures.
Exemple de travail
la source