J’ai une div et quand je clique dessus, jQuery ajoute une classe qui lance une animation en cours. Lorsque l’animation s’arrête (après 3 secondes), je souhaite que la classe soit supprimée afin que, lorsque l’utilisateur clique à nouveau sur la div, l’animation recommence.
Ceci n’est qu’un test et uniquement le navigateur Chrome pour le moment.
Voici mon CSS3:
.spin360 { -webkit-animation-name: spin; -webkit-animation-duration: 3s; -webkit-animation-iteration-count: 1; -webkit-animation-timing-function: ease; -webkit-animation-fill-mode: forwards; } @-webkit-keyframes spin { 0% { -webkit-transform: rotateX(0); } 100% { -webkit-transform: rotateX(-360deg); } }
Voici mon script:
$(document).ready(function () { $('#spinButton').click(function () { $('#shape').addClass('spin360'); }); });
Voici ce que j’ai essayé:
$(document).ready(function () { $('#spinButton').click(function () { $('#shape').addClass('spin360').on('webkitAnimationEnd', function () { $('#shape').removeClass('spin360'); }); }); });
Et
$(document).ready(function () { $('#spinButton').click(function () { $('#shape').addClass('spin360'); }); $('#spinButton').addEventListener('webkitAnimationEnd', function (e) { $('#shape').removeClass('spin360'); }); });
Dans tous les cas, mon animation s’exécute au premier clic, mais pas aux autres.
Vous pouvez également le faire dans plusieurs navigateurs:
$('#spinButton').bind('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', function (e) { $('#shape').removeClass('spin360'); });
J’utilisais une ancienne version de jquery.
J’ai mis à jour à la version 1.8.0 et cela fonctionne.
// fonctionne bien mais vous avez quitté notre déclaration standard // afin que votre code ne fonctionne que sur Chrome, Safari, Opera
/ * Chrome, Safari, Opera * /
@ -webkit-keyframes spin {0% {-webkit-transform: rotationX (0); } 100% {-webkit-transform: rotationX (-360deg); }}/ * Syntaxe standard * /
@keyframes spin {0% {-webkit-transform: rotationX (0); } 100% {-webkit-transform: rotationX (-360deg); }}