CSS3 – ajoute une classe pour déclencher une animation et supprime une classe à la fin

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); }}