Prise en compte d'un en-tête fixe avec animate.scrolltop et (target) .offset (). Top;

Cela devrait être une jolie question de base, mais j'ai jeté la plupart de mes matin à elle, et à ce point, je suis près de jeter l'éponge. Je n'ai même pas un peu de js foo -- mais j'ai trouvé un bien commenté morceau de code que j'espère utiliser pour animer des liens d'ancrage c'est:

$(document).ready(function() {
$('a[href*=#]').bind('click', function(e) {
e.preventDefault(); //prevent the "normal" behaviour which would be a "hard" jump

var target = $(this).attr("href"); //Get the target

var scrollToPosition = $(target).offset().top;

//perform animated scrolling by getting top-position of target-element and set it     as scroll target
$('html, body').stop().animate({ scrollTop: scrollToPosition}, 600, function() {
     location.hash = target;  //attach the hash (#jumptarget) to the pageurl
});

return false;

 });
});

J'essaye de mettre à la terre 30px au-dessus de l'offset().top, j'ai essayé

$('html, body').stop().animate({ scrollTop: scrollToPosition -30}, 600,

Qui fonctionne presque -- il va à la bonne place, mais puis rebondit.

J'ai aussi essayé de

scrollTop: $(target).offset().top - 20 },

J'ai aussi essayé de

scrollTop: $(hash).offset().top + $('#access').outerHeight()

Qui ne semble pas changer quoi que ce soit.

Il semble que la réponse pourrait être ici: JQuery page de défilement problème avec l'en-tête fixe mais j'ai juste ne peux pas sembler obtenir assez.

Je sais que c'est similaire à d'autres questions, mais je suis passé par ce que j'ai pu trouver et je suis analphabète assez que je n'ai pas été en mesure de copier/coller de tout ce qui résout le problème.

Je serais très reconnaissant pour trouver une solution.

Merci beaucoup,

Martin

PS

Cet autre morceau de code que j'ai trouvé ne fonctionne pas mais c'est le décapage, le hashtag, ce qui en fait le plus souvent inutiles.

$(function(){
$('a[href*=#]').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
    && location.hostname == this.hostname) {
        var $target = $(this.hash);
        $target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
        if ($target.length) {
            var targetOffset = $target.offset().top;
            $('html,body').animate({scrollTop: targetOffset - 30}, 1000);
            return false;
        }
    }
  });
});

source d'informationauteur Martin