jQuery滚动/跟随侧边栏(div)

jQuery滚动/跟随侧边栏(div),jquery,scroll,sidebar,Jquery,Scroll,Sidebar,使用jquery技术从中滚动/跟踪侧栏 唯一的问题是,当侧边栏(.sidebar)到达页脚(.footer)时,它会将页脚向下推近页脚的高度。 如果页脚高度为200px,侧边栏将页脚推到~200px(Internet Explorer),~50px(Firefox、Chrome、Opera),然后显示页脚。200px内容和页脚之间的空白是我真正的问题。 我希望侧边栏停止滚动页脚的起始位置。试试看 threshold = foffset.top - $sidebar.height() - off

使用jquery技术从中滚动/跟踪侧栏

唯一的问题是,当侧边栏(.sidebar)到达页脚(.footer)时,它会将页脚向下推近页脚的高度。
如果页脚高度为200px,侧边栏将页脚推到~200px(Internet Explorer),~50px(Firefox、Chrome、Opera),然后显示页脚。
200px内容和页脚之间的空白是我真正的问题。
我希望侧边栏停止滚动页脚的起始位置。

试试看

 threshold = foffset.top - $sidebar.height() - offset.top

也许是一个更干净的代码:

$(function() {
    var $sidebar   = $("#sidebar"), 
        $window    = $(window),
        offset     = $sidebar.offset(),
        topPadding = 15;

    $window.scroll(function() {
        if ($window.scrollTop() > offset.top) {
            $sidebar.stop().animate({
                marginTop: $window.scrollTop() - offset.top + topPadding
            }, 400);
        } else {
            $sidebar.stop().animate({
                marginTop: 0
            }, 400);
        }
    });
});

您可以使用“其他人”值更改
400
,以更改动画的持续时间(将其设置为0,让侧边栏设置为“不”动画)。

问题太老了,在阅读其他答案后,我针对我的案例提出了此问题。我希望这能帮助以后的人

$(function() {
var $sidebar   = $("#sidebar"), 
$window    = $(window),
offset     = $sidebar.offset(),
topPadding = 15;
$window.scroll(function() {
if ($window.scrollTop() > offset.top) {
    if (($window.scrollTop())> ($("#following").offset().top + $("#following").height() - $sidebar.height())) {
        ;
    } else {
        $sidebar.stop().animate({
            marginTop: $window.scrollTop() - offset.top + topPadding
        }, 400);
    }

} else {
    $sidebar.stop().animate({
        marginTop: 0
    }, 400);
}
});
});

因此,您需要让脚本从窗口高度计算中减去页脚高度…..尝试
threshold=foffset.top-$sidebar.height()-offset.top
@Vicky,这很有效,thanks@Ashish额外的滚动是因为侧边栏的顶部位置,上面的代码从滚动高度删除了它
$(function() {
var $sidebar   = $("#sidebar"), 
$window    = $(window),
offset     = $sidebar.offset(),
topPadding = 15;
$window.scroll(function() {
if ($window.scrollTop() > offset.top) {
    if (($window.scrollTop())> ($("#following").offset().top + $("#following").height() - $sidebar.height())) {
        ;
    } else {
        $sidebar.stop().animate({
            marginTop: $window.scrollTop() - offset.top + topPadding
        }, 400);
    }

} else {
    $sidebar.stop().animate({
        marginTop: 0
    }, 400);
}
});
});