J'essaie de faire défiler 100px à chaque fois que l'utilisateur se rapproche du haut du document.
J'ai la fonction qui s'exécute lorsque l'utilisateur s'approche du haut du document, mais la fonction .scrollTo ne fonctionne pas.
J'ai mis une alerte après et avant pour vérifier si c'était réellement la ligne qui l'arrêtait ou non et seule la première alerte se déclenche, voici le code:
alert("starting");
$.scrollTo({ top: '+=100px', left: '+=0px' }, 800);
alert("finished");
Je sais que la page jquery est correctement liée car j'utilise de nombreuses autres fonctions jquery et elles fonctionnent toutes très bien. J'ai également essayé de supprimer le «px» d'en haut et cela ne semble pas faire de différence.
Réponses:
Si cela ne fonctionne pas, pourquoi n'essayez-vous pas d'utiliser la méthode scrollTop de jQuery?
Si vous cherchez à faire défiler en douceur, vous pouvez utiliser la fonction javascript de base setTimeout / setInterval pour le faire défiler par incréments de 1px sur une durée définie.
la source
la source
html, body
au lieu de simplement html?body
cela sur Chrome 4: stackoverflow.com/questions/1890995/...scrollTop: 0
fonctionne également très bien. Mais la durée diminue. Fonctionne bien si réglé à 1000 en vitessejQuery prend désormais en charge scrollTop en tant que variable d'animation.
Vous n'avez plus besoin de setTimeout / setInterval pour faire défiler en douceur.
la source
$("#id").offset().top
place?Pour contourner le problème de
html
vsbody
, j'ai résolu ce problème en n'animant pas directement le css, mais en appelant plutôtwindow.scrollTo();
à chaque étape:Cela fonctionne bien sans aucun problème d'actualisation car il utilise du JavaScript multi-navigateurs.
Consultez http://james.padolsey.com/javascript/fun-with-jquerys-animate/ pour plus d'informations sur ce que vous pouvez faire avec la fonction d'animation de jQuery.
la source
window.pageYOffset
de$(window).scrollTop()
etwindow.scrollTo(0, val)
vers$(window).scrollTop(val)
pour ne pas avoir à me soucier de la compatibilité du navigateur.On dirait que vous avez une syntaxe légèrement erronée ... Je suppose qu'en fonction de votre code, vous essayez de faire défiler 100 pixels vers le bas en 800 ms, si c'est le cas, cela fonctionne (en utilisant scrollTo 1.4.1):
la source
En fait quelque chose comme
fonctionnera bien et soutiendra le rembourrage. Vous pouvez également prendre en charge facilement les marges - pour la finalisation, voir ci-dessous
la source