Comment append ‘easing’ pour animer / scrolltop

J’utilise la fonction suivante pour créer une animation de défilement pour ancrer des liens:

$('a').click(function(){ $('html, body').animate( {scrollTop: $( $.attr(this, 'href') ).offset().top}, 500 ); return false; }); 

Je voudrais append assouplissement. Cependant, lorsque j’ajoute ‘easing’ après ‘500’, le script est cassé:

 $('a').click(function(){ $('html, body').animate( {scrollTop: $( $.attr(this, 'href') ).offset().top}, 500, easing ); return false; }); 

Des idées que je fais mal?

Vous devez d’abord inclure le script jQuery.UI, puis votre code devrait ressembler à ceci:

 $('a').click(function(){ var top = $('body').find($(this).attr('href')).offset().top; $('html, body').animate({ scrollTop: top },500, 'easeOutExpo'); return false; }); 

Pour ton information:

Assouplissement

Le paramètre restant de .animate () est une chaîne nommant une fonction d’accélération à utiliser. Une fonction d’accélération spécifie la vitesse à laquelle l’animation progresse à différents points de l’animation. Les seules implémentations d’assouplissement dans la bibliothèque jQuery sont les modifications par défaut, appelées swing, et celles qui progressent à un rythme constant, appelé linéaires. Des fonctions d’accélération supplémentaires sont disponibles avec l’utilisation de plug-ins, notamment la suite jQuery UI .


Pourquoi votre code ne fonctionne pas:

  1. Parce que vous utilisez this qui était dans la scope de la méthode d’animation et référence aux objects body et html .
  2. Parce que l’ easing n’est pas une méthode. Il s’agit d’un type de chaîne de la propriété d’animation, il est donc nécessaire de l’écrire sous forme de chaîne, par exemple: 'easeOutExpo' .