jquery: animer scrollLeft
Je suis assez nouveau à jquery et n'arrive pas à comprendre pourquoi mon code ne fonctionne pas. J'ai une mise en page horizontale et que vous voulez utiliser la scrollLeft() fonction (qui fonctionne parfaitement avec ce code)
$("#next").click(function() {
currentElement = currentElement.next();
scrollTo(currentElement);
});
function scrollTo(element) {
$(window).scrollLeft(element.position().left);
}
Mais idéalement, j'aimerais animer ce donc que lorsque #suivant est cliqué, il y a un joli effet d'animation pour les faire défiler vers la gauche de la fonction
$("#next").click(function() {
currentElement = currentElement.next();
scrollTo(currentElement);
});
function scrollTo(element) {
$(window).animate({scrollLeft: element.position().left}, 750);
}
Mais en vain. Ce que je fais mal?
- scrollLeft() est une fonction jQuery qui fonctionne uniquement sur les éléments du DOM. animate() ne peut fonctionner que sur les DOM attributs de style, pas de fonctions.
- Dans ma situation, j'ai constaté que certains éléments fixes couvrir le site de l'ul , et qui me erreur de l'amt est de dépassement( En fait, l'ul n'est pas de débordement). J'ai donc scrollLeft tant de fois , et ça ne fonctionne pas. Et la raison pourquoi j'ai pris l'ul est de dépassement de ce qui ne l'est pas.
Vous devez vous connecter pour publier un commentaire.
Vous voudrez quelque chose comme ceci:
Je crois que cela devrait fonctionner, il est adopté à partir d'un
scrollTop
fonction..click
fonction, mais vous êtes à l'appel de l'autre sein. Peut-être essayer$(window)
au lieu de$('html, body')
.scrollTo
code de fonction devient$('html, body').animate({scrollLeft: $(currentElement).offset().left}, 800);
, de mettre votrescrollTo
le code exactement comme il est, il serait$(window).animate({scrollLeft: $(currentElement).position().left}, 750);
. Cependant, l'autre chose que vous pourriez vouloir essayer est de tourner laelement
partie de votrescrollTo
code de fonction à$(element)
, et de voir si cela fonctionne.$(window).animate( { scrollLeft : 320 })
ne fonctionne pas sur FF ou Chrome à l'aide de jQuery: 1.11.3Tout d'abord je tiens à souligner que les animations css serait probablement mieux si vous faites beaucoup de fois mais j'ai fini par obtenir l'effet désiré par l'emballage .scrollLeft à l'intérieur .animer
Le deuxième paramètre est la vitesse, et vous pouvez également ajouter un troisième paramètre si vous utilisez le défilement régulier de quelque sorte.