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

我需要的是侧边栏滚动与正常页面(相对),当边栏的最后一行文本(无论什么)进入视图时,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/

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

你是说在页面加载后#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变量,但也可以在更改侧边栏的内容高度后更新这些变量。