2017-10-04 1 views
1

je dois déclencher l'animation sur chaque bouton cliquez pas basculer la classe bouton que j'ai sur mon extrait ci-dessous:Jquery animation de déclenchement sur chaque clic (numéro)

J'ai essayé avec addClass() et removeClass() méthodes similaires, mais le travail ne marche pas comme prévu, voici le code:

$(document).ready(function() { 
 
    $("button[class*='navbar-toggler']").click(function() { 
 
     $(this).toggleClass("my-animation") 
 
    }); 
 
})
@keyframes my-animation { 
 
\t 16.65% { 
 
\t \t transform: translateY(8px); 
 
\t } 
 

 
\t 33.3% { 
 
\t \t transform: translateY(-6px); 
 
\t } 
 

 
\t 49.95% { 
 
\t \t transform: translateY(4px); 
 
\t } 
 

 
\t 66.6% { 
 
\t \t transform: translateY(-2px); 
 
\t } 
 

 
\t 83.25% { 
 
\t \t transform: translateY(1px); 
 
\t } 
 

 
\t 100% { 
 
\t \t transform: translateY(0); 
 
\t } 
 
} 
 

 
.my-animation { 
 
\t \t animation-name: my-animation; 
 
\t \t animation-duration: 1s; 
 
\t \t animation-timing-function: ease-in-out; 
 
\t \t animation-iteration-count: 1; 
 
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navToggler" aria-controls="navToggler" aria-expanded="false" aria-label="Toggle navigation"> 
 
          <i class="fa fa-bars"></i> 
 
         </button>

Répondre

2

utilisez setTimeout funtion pour supprimer la classe my-animation et utiliser

.navbar-toggler{ 
outline:0!important; 
} 

$(document).ready(function() { 
 
    if(!$("button[class*='navbar-toggler']").hasClass('my-animation')){ 
 
    $("button[class*='navbar-toggler']").click(function() { 
 
     $(this).addClass("my-animation"); 
 
     setTimeout(function(){ $("button[class*='navbar-toggler']").removeClass("my-animation"); }, 1000); 
 
    }); 
 
    } 
 
})
@keyframes my-animation { 
 
\t 16.65% { 
 
\t \t transform: translateY(8px); 
 
\t } 
 

 
\t 33.3% { 
 
\t \t transform: translateY(-6px); 
 
\t } 
 

 
\t 49.95% { 
 
\t \t transform: translateY(4px); 
 
\t } 
 

 
\t 66.6% { 
 
\t \t transform: translateY(-2px); 
 
\t } 
 

 
\t 83.25% { 
 
\t \t transform: translateY(1px); 
 
\t } 
 

 
\t 100% { 
 
\t \t transform: translateY(0); 
 
\t } 
 
} 
 

 
.my-animation { 
 
\t \t animation-name: my-animation; 
 
\t \t animation-duration: 1s; 
 
\t \t animation-timing-function: ease-in-out; 
 
\t \t animation-iteration-count: 1; 
 
} 
 

 
.navbar-toggler{ 
 
outline:0!important; 
 
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navToggler" aria-controls="navToggler" aria-expanded="false" aria-label="Toggle navigation"> 
 
          <i class="fa fa-bars"></i> 
 
         </button>

+0

Et pourquoi il ne fonctionne pas si vous utilisez $ (this) .removeClass() au lieu de $ ("bouton [classe * = 'navbar-basculeur']"). RemoveClass() ?? – SilverSurfer

+0

peut-être $ (ce) ne fonctionne pas parce que la fonction setTimeout, je ne suis pas sûr .. – Gattbha

+0

Ok encore merci – SilverSurfer