113 of 119 menu

Méthode animate

La méthode animate permet de créer des effets d'animation pour diverses propriétés CSS. Le seul paramètre obligatoire est un objet avec des propriétés CSS, similaire à celui que nous passons à la méthode css. De nombreuses propriétés ayant des valeurs non numériques ou plusieurs valeurs ne peuvent pas être animées par la fonctionnalité de base de jQuery (par exemple background-color). Les noms abrégés des propriétés CSS ne sont pas toujours non plus supportés, par exemple font - à la place, il faut utiliser fontSize ou font-size. Avant les valeurs, on peut mettre '+=' ou '-=', dans ce cas la valeur spécifiée ensuite sera ajoutée ou soustraite de la valeur actuelle de la propriété. Au lieu de valeurs numériques, on peut aussi mettre show, hide ou toggle. Tous les effets jQuery, y compris animate, peuvent être désactivés globalement, en utilisant le paramètre jQuery.fx.off = true, qui fixe la valeur de la durée à 0.

Syntaxe

Le premier paramètre de l'animation est un objet avec les propriétés CSS et leurs valeurs au format clé: valeur, que nous allons animer. Les autres paramètres sont considérés comme facultatifs. Le deuxième paramètre définit la durée de l'animation en millisecondes, 400ms par défaut. Le troisième paramètre est la fonction d'interpolation (par défaut c'est swing), et le quatrième - la fonction de callback, qui sera exécutée après la fin de l'animation :

.animate(propriétés, [durée ], [fonction d'interpolation ], [fonction de callback ]);

Le temps peut être défini non seulement en millisecondes, mais aussi avec les mots-clés slow (600ms) et fast (200ms), plus la valeur est grande, plus l'animation est lente. On peut passer en deuxième paramètre diverses options, sous la forme d'un objet JavaScript, contenant des paires clé: valeur :

.animate(propriétés, options);

Par exemple, définissons pour les propriétés CSS width et height la valeur toggle. La durée à 5000ms, passons les fonctions d'interpolation sous forme d'objet, pour la largeur ce sera une fonction linéaire, et pour la hauteur - easeOutBounce, également à la fin de l'animation, une fonction s'exécutera une fois (voir la clé complete), qui après l'élément avec #test placera un div avec l'inscription 'Animation complete.' :

$('#test').animate({ width: 'toggle', height: 'toggle' }, { duration: 5000, specialEasing: { width: 'linear', height: 'easeOutBounce' }, complete: function() { $(this).after('<div>Animation complete.</div>'); } });

Le tableau ci-dessous présente les propriétés et méthodes de l'objet options et leur description :

Nom Description
duration Durée de l'animation en millisecondes - chaîne ou nombre. 400ms par défaut.
easing Définit quelle fonction d'interpolation utiliser. swing par défaut.
queue Valeur booléenne ou chaîne. true par défaut. Indique s'il faut mettre l'animation en file d'attente. Avec la valeur false l'animation démarrera immédiatement. Si le paramètre est une chaîne, alors l'animation sera mise dans la file d'attente représentée par ce paramètre. Lors de l'utilisation d'une file d'attente avec un nom personnalisé, l'animation ne démarre pas automatiquement, pour la démarrer - utilisez dequeue('queuename').
specialEasing Ici vous pouvez passer un objet, dans lequel les clés seront les propriétés CSS, et les valeurs - les fonctions d'interpolation correspondantes.
step Fonction appelée pour chaque propriété animée de chaque élément animé. Elle permet de modifier l'objet Tween pour changer la valeur de la propriété avant qu'elle ne soit définie. Elle prend comme paramètres la valeur actuelle de tween et l'objet Tween.
progress Fonction appelée après chaque étape de l'animation, une seule fois par élément indépendamment du nombre de propriétés animées. La fonction prend trois paramètres animation (sous forme de promesse), progress (nombre de 0 à 1) et remainingMs (nombre de millisecondes restantes).
complete Fonction appelée une fois après la fin de l'animation de l'élément. La fonction prend animation (sous forme de promesse).
start Fonction appelée lorsque l'animation de l'élément commence. La fonction prend animation (sous forme de promesse) et jumpedToEnd (Valeur booléenne. Si true, alors l'animation se termine automatiquement).
done Fonction appelée lorsque l'animation de l'élément se termine (sa promesse est remplie avec succès). La fonction prend animation (sous forme de promesse) et jumpedToEnd (Valeur booléenne. Si true, alors l'animation se termine automatiquement).
fail Fonction appelée lorsque l'animation de l'élément se termine avec une erreur (sa promesse est remplie avec une erreur). La fonction prend animation (sous forme de promesse) et jumpedToEnd (Valeur booléenne. Si true, alors l'animation se termine automatiquement).
always Fonction appelée lorsque l'animation de l'élément se termine ou s'arrête sans être achevée (sa promesse est remplie avec succès ou avec une erreur). La fonction prend animation (sous forme de promesse) et jumpedToEnd (Valeur booléenne. Si true, alors l'animation se termine automatiquement).

Exemple

Déplaçons, lors d'un clic sur le bouton #left, le carré vert vers la gauche, et sur le bouton #right vers la droite de 50px, fixons également la durée à 600ms - avec la commande slow :

<button id="left">left</button> <button id="right">right</button> <div class="block"></div> div { position: absolute; background-color: green; left: 50px; width: 100px; height: 100px; margin: 5px; } $('#right').click(function() { $('.block').animate({'left': '+=50px'}, 'slow'); }); $('#left').click(function() { $('.block').animate({'left': '-=50px'}, 'slow'); });

Voir aussi

  • la méthode show,
    qui affiche les éléments de manière fluide
  • la méthode stop,
    qui permet d'arrêter une animation en cours
  • la méthode delay,
    qui définit un délai d'exécution des événements
  • la propriété jQuery.fx.off,
    qui permet de désactiver globalement l'animation
  • le sélecteur animated,
    qui sélectionne les éléments qui sont actuellement impliqués dans une animation
azbydeenesfrkakkptruuz