jQuery animate scrollTop

J'ai assez peu de section balises dans un div avec un dépassement de capacité définie à hidden. Le code est dans la ligne de ce:


<div id="viewport">
   <section>
      content
   </section>
   <section>
      content
   </section>
</div>

Je l'ai réglé comme ça parce que je veux être en mesure de faire défiler les sections contenues dans le div lorsque le lien correspondant est activé dans le menu. J'ai cette fonction:


$('#mn a').click(function(){
   var aHref = $(this).attr("href");
   var sectionHeight = $('section'+aHref+'').height();
   $('#viewport').height(sectionHeight);
});

Que j'utilise pour redimensionner la #viewport div parce que le sections sont de tailles différentes. Lorsque j'essaie de mettre ce livre dans le cadre de cette fonction:


$('body,html').animate({scrollTop: $(aHref).offset().top}, 800);

il rend l'ensemble de défilement des pages. Quand j'ai essayer de remplacer $('body,html') avec $('section, #viewport') il défile à l'intérieur de la div, mais il ne le fait pas correctement.

J'ai un exemple vivant de ce ici. Je suppose qu'il a quelque chose à voir avec la .offset() ou ce que je suis de passage dans la .animate(), mais j'ai essayé pas mal de choses différentes, mais en vain. Quelqu'un peut-il svp me pointer dans la bonne direction ou de me dire ce que j'ai fait de mal?

OriginalL'auteur jezza-tan | 2011-12-13