相对侧边栏固定,当它到达窗口的末端

时间:2013-05-05 11:29:29

标签: jquery fixed relative sidebar

Wat我需要的是侧边栏滚动正常页面(相对),当边栏的最后一行文本(无论什么)进入视图时,sidbar应该更改为固定。因此,侧边栏区域不会有空白区域。

到目前为止我得到了什么:

$(function() {
    var top = $('#sidebar').offset().top;
    var sidebartop = $('#sidebar').height() / 2;

    $(window).scroll(function(evt) {
        var y = $(this).scrollTop() - sidebartop;
        if (y > top) {
                $('#sidebar').addClass('fixed').css( "top",  -top -sidebartop + 220)
            }
        else {
            $('#sidebar').removeClass('fixed');
            $('#sidebar').css( "top", "auto" );
        }
    });
});

http://jsfiddle.net/VtPcm/437/

它实际上是工作 - 但不是动态的,所以如果我改变侧边栏的高度,我必须再次设置脚本 - 所以我该如何改变它?

1 个答案:

答案 0 :(得分:0)

你是说在页面加载后#sidebar的高度可能会改变吗?如果是这样,包括$(window).scroll函数内的top和sidebartop变量声明应该可以做到这一点:

$(function() {      
    $(window).scroll(function(evt) {
        var top = $('#sidebar').offset().top;
        var sidebartop = $('#sidebar').height() / 2;
        var y = $(this).scrollTop() - sidebartop;
        if (y > top) {
                $('#sidebar').addClass('fixed').css( "top",  -top -sidebartop + 220)
            }
        else {
            $('#sidebar').removeClass('fixed');
            $('#sidebar').css( "top", "auto" );
        }
    });
});

或者您可以像当前一样在页面加载时测量top和sidebartop变量,但也可以在更改侧边栏的内容高度后更新这些变量。