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/
它实际上是工作 - 但不是动态的,所以如果我改变侧边栏的高度,我必须再次设置脚本 - 所以我该如何改变它?
答案 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变量,但也可以在更改侧边栏的内容高度后更新这些变量。