2012-07-22 6 views
2

J'ai chargé ce jQuery-snippet pour faire glisser une page via anchorLinks.jQuery: Glissement via le lien d'ancrage

http://www.position-absolute.com/articles/better-html-anchor-a-jquery-script-to-slide-the-scrollbar/

Dans mon cas, j'ai un bloc fixe (position: fixe) sur le haut de la page. En raison de cela, j'ai besoin d'une valeur delta pour glisser vers le bas. Si je n'utilise pas une telle valeur delta, la page glisse au plus profond de sorte que mon anchorLink est caché par le bloc fixe.

Quelqu'un a-t-il une idée de comment résoudre ce problème?

Thx

Répondre

0

Il doit y avoir une solution en éditant cette ligne:

window.location.hash = elementClick 

Modification de la valeur de durée permet de glisser à la position droite. Mais la fenêtre "saute" la valeur de décalage à la fin du glissement.

Solution: je fixe le problème en supprimant la ligne:

window.location.hash = elementClick 
0

L'original Plugin:

jQuery.fn.anchorAnimate = function(settings) { 

    settings = jQuery.extend({ 
     speed : 1100 
    }, settings); 

    return this.each(function(){ 
     var caller = this 
     $(caller).click(function (event) { 
      event.preventDefault() 
      var locationHref = window.location.href 
      var elementClick = $(caller).attr("href") 

      var destination = $(elementClick).offset().top; 
      $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, settings.speed, function() { 
       window.location.hash = elementClick 
      }); 
      return false; 
     }) 
    }) 
} 

Modifié:

jQuery.fn.anchorAnimate = function(settings) { 

    settings = jQuery.extend({ 
     speed : 1100, 
      offset: 0 
    }, settings); 

    return this.each(function(){ 
     var caller = this 
     $(caller).click(function (event) { 
      event.preventDefault() 
      var locationHref = window.location.href 
      var elementClick = $(caller).attr("href") 

      var destination = $(elementClick).offset().top; 
      $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination+settings.offset}, settings.speed, function() { 
       window.location.hash = elementClick 
      }); 
      return false; 
     }) 
    }) 
} 

Notez que je viens d'ajouter une option offset. Donc, si votre div fixe a une hauteur de 60px puis il suffit d'appeler avec $('#whatever').anchorAnimate({offset: 60});

+0

Merci !!!! J'ai essayé ceci en ajoutant une valeur statique, par ex. 60px. Mais je pense que "window.location.hash = elementClick" est le problème. – Vivid

+0

Votre modification ne résout pas le problème. :-( – Vivid

Questions connexes