滚动到div - jquery - 具体位置

时间:2011-11-10 15:58:22

标签: javascript jquery scroll

我正在尝试这段代码:

  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

2 个答案:

答案 0 :(得分:5)

您需要为顶部栏指定一个ID(例如id =“header”),然后从scrollTop属性中减去该值:

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

Here is a working example

答案 1 :(得分: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"));           
    });