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 .
this
qui était dans la scope de la méthode d’animation et référence aux objects body
et html
. 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'
.