【发布时间】:2010-11-24 10:47:30
【问题描述】:
我有一个侧边栏,即使滚动条向下移动以查看更多内容,我也希望它在窗格右侧被冻结。我放弃了它的完美修复,并通过使用 jQuery 与页面一起向下滚动的侧边栏来处理它。目前这就是我的处理方式。
<script type="text/javascript">
$(window).scroll(function() {
$('#sidebarPage1').animate(
{ top: $(window).scrollTop() + 'px' },
{ queue: false, duration: 500, easing: 'easeInOutSine' }
);
});
</script>
我的页面上有一个 100% 宽的页眉和页脚,所以侧边栏的顶部从顶部偏移了大约 150 像素,当用户完全滚动到底部时有小的视口时,该栏最终会在我的下方页脚,或者如果它是一个完全在屏幕之外的非常小的视口。
是否有一种简单的方法来计算设置顶部的位置,让它在距视口底部大约 200 像素处停止,这样它就不会在页脚中崩溃?
更新来自 Joel 的回答:
<script type="text/javascript">
$(window).scroll(function() {
var dynamicSidebarHeight = $('#sidebar').height();
var fixedFooterOffset = 168;
var scrollTo = $(window).scrollTop()
var calculatedMaxTop = $('#footer').offset().top -
dynamicSidebarHeight - fixedFooterOffset;
if (scrollTo > calculatedMaxTop) {
scrollTo = calculatedMaxTop;
}
$('#sidebarPage1')
.animate(
{ top: scrollTo + 'px' },
{ queue: false, duration: 500, easing: 'easeInOutSine' }
);
});
</script>
固定 .Height() 函数
【问题讨论】: