接受的答案是一个很好的基础,但是在滚动过去的 div 之后,然后再返回,它不会被切换回固定的 div,因为positionOffset
和floatingOffset
是相等的,并且不会改变。
我已经更新了 JSFiddle来解决这个问题。我还删除了其中一个 div,因此您无需复制内容。
$(function fixedUntilPoint() {
var container = $('#container');
var offsetContainer = container.offset().top;
function adjustDivPosition() {
var offsetFloat = $(document).scrollTop() + $(window).height() - container.outerHeight();
if(offsetContainer <= offsetFloat){
container.css({
bottom: 'auto',
position: 'absolute',
top: offsetContainer
});
} else {
container.css({
bottom: 0,
position: 'fixed',
top: 'auto'
});
}
}
$(window).on('scroll resize', adjustDivPosition)
adjustDivPosition();
});