Jquery (div滚动跟随)当div遇到另一个div时,(div滚动跟随)也与其他div一起滚动

Jquery (div滚动跟随)当div遇到另一个div时,(div滚动跟随)也与其他div一起滚动,jquery,Jquery,我有4个div(页眉、左右内容和页脚)。我有右侧内容滚动跟随,我希望发生的是当页脚顶部与右侧底部相交时,右侧也与左侧div一起滚动 我设置了一个我当前在中的预览您可以使用Math.min()和一个预先计算的值来限制右侧栏的marginTop设置,这样它的动画就不会超出与页脚接触的点: 我已将预先计算的值命名为rightDelta $(function() { var $sidebar = $("#right"), $window = $(window),

我有4个div(页眉、左右内容和页脚)。我有
右侧内容
滚动跟随,我希望发生的是当页脚顶部与
右侧
底部相交时,右侧也与左侧
div
一起滚动

我设置了一个我当前在中的预览

您可以使用
Math.min()
和一个预先计算的值来限制右侧栏的marginTop设置,这样它的动画就不会超出与页脚接触的点:

我已将预先计算的值命名为
rightDelta

$(function() {
    var $sidebar = $("#right"), 
        $window = $(window),
        rightOffset = $sidebar.offset(),
        rightDelta = $("#footer").offset().top - $("#header").offset().top - $("#header").outerHeight() - $("#right").outerHeight(),
        topPadding = 15;

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

});

实际上,您可以结合使用
Math.min()
Math.max()
使滚动处理程序成为一个单语句函数:

$(function() {
    var $sidebar = $("#right"), 
        $window = $(window),
        rightOffset = $sidebar.offset(),
        rightDelta = $("#footer").offset().top - $("#header").offset().top - $("#header").outerHeight() - $("#right").outerHeight(),
        topPadding = 15;

    $window.scroll(function() {
            $sidebar.stop().animate({
                marginTop: Math.max(Math.min($window.scrollTop() - rightOffset.top + topPadding, rightDelta), 0)
            });
    });

});

看看这个。。你的问题似乎也一样。。谢谢你的回复,如果我们有相同的情况,我会重新考虑。我想我们的情况不一样,或者可能我错了。谢谢你的回复。