2010-07-15 5 views
4

Je crée un site horizontal (il pourrait aussi être tout autre site défilement automatique, comme diagonale) qui utilise l'enfant $ .Localscroll du plug-in Jquery.ScrollTo.Faire du travail Jquery.ScrollTo basé sur la vitesse au lieu de la durée

Il y a un gros problème avec ce plugin; il calcule le mouvement en fonction d'une durée. Cela signifie que la transition entre page 1 et 2 prend 2 secondes, mais une transition de la page 1 à 10 prend également 2 secondes, ce qui en fait la transition si rapide, la transition elle-même est pas vraiment plus visible. Je ne sais pas combien de liens il y aura et les liens ne seront pas dans le même menu mais éparpillés sur les pages.

Existe-t-il un moyen de connaître la position actuelle de défilement (de préférence via le plugin) et d'utiliser le hash (#) pour trouver la nouvelle valeur scrollto, puis calculer la durée en fonction de la vitesse?

Répondre

1

Vous pouvez obtenir la valeur scrollTop avec $("element").scrollTop(). Vous pouvez faire un calcul et définir la durée en fonction de cela.

0

Vous pouvez dire combien de pixels doivent être déplacés dans une durée. Dans ce cas 50px/10ms.

par exemple .:

var scrollOffset = root.scrollTop, 
    offset  = element.offsetTop, 
    speed  = 50; 

function scrollLoop() { 

    if (offset >= scrollOffset) { 
    return; 
    } 

    scrollOffset -= speed; 

    root.animate({ scrollTop: scrollOffset }, 10, function() { 
    scrollLoop(); 
    }); 
} 
Questions connexes