2011-11-10 15 views
2

私はこのコードをしようとしています:スクロール - jqueryの - 特定の位置

function goToByScroll(id){ 

     id = id.replace("link", ""); 

     $('html,body').animate({ 
      scrollTop: $("#"+id).offset().top}, 
      'slow'); 
    } 

    $("#sidebar > ul > li > a").click(function(e) { 

     e.preventDefault(); 

     goToByScroll($(this).attr("id"));   
    }); 

問題は、私は、リストの特定の要素をクリックしたときに、スクロールは、ウィンドウの上部に上がるということです。しかし、私の場合、私は上部に固定されたdivがあるので、コンテンツはこのdivによって隠されています。まあ、私はdivの前にスクロールを止めたい。

demo

答えて

5

あなたはトップバーにID(例えばID = "ヘッダ")を与え、次いでscrollTopスプライト属性からそれを減算する必要があります

$('html,body').animate({ 
    scrollTop: ($("#"+id).offset().top-$('#header').outerHeight(true))+'px'}, 
    'slow'); 

Here is a working example

+0

実際には少し考えた後、ここでは 'outerHeight(true) '#header'のマージンも尊重されます。 – Kato

4
function goToByScroll(id){ 

     id = id.replace("link", ""); 

     $('html,body').animate({ 
      scrollTop: ($("#"+id).offset().top - $("#YOUR_FIXED_DIV").height()) }, 
      'slow'); 
    } 

    $("#sidebar > ul > li > a").click(function(e) { 

     e.preventDefault(); 

     goToByScroll($(this).attr("id"));   
    }); 
+2

確かに動作します。私はあなたがouterHeight()、パディングを可能にすること、そしてmarginHを可能にするためにouterHeight(true)が必要だと思っています; – Kato

関連する問題