位置:固定在补充工具栏 – 如何在页脚之前停止?

我在侧边栏中使用jQuery浮动小部件 – 链接到我的posthttp://www.product-investigation.com/fat-loss-factor-review – 如果你向下滚动,你可以看到我的意思..我想要在页脚之前在侧边栏中停止我的adsense小部件..谢谢你的帮助:)

我的javascript

 $(document).ready(function() { function isScrolledTo(elem) { var docViewTop = $(window).scrollTop(); //num of pixels hidden above current screen var docViewBottom = docViewTop + $(window).height(); var elemTop = $(elem).offset().top; //num of pixels above the elem var elemBottom = elemTop + $(elem).height(); return ((elemTop  sticky.offset().top) { sticky.css('position','absolute'); sticky.css('top',stopHeight); } }); });  

我已经更新了你的jsfiddle 。 我改变了你的条件:

 return ((elemTop <= docViewTop || elemTop >= docViewTop)); //Changed your return in isScrolledTo 

说明:我在下面添加的代码将sticky div放在footer的顶部,如果我使用原始的return语句并向上滚动, sticky div的位置仍然是footer顶部的absolute位置。 这是因为你的return语句只会检查元素的top位置是否小于或等于scrollTop()值,而scrollTop()值只能在scrolldown期间使用。 在我的情况下, sticky已经在底部, isScrolledTo()还应该检查sticky div的top是否大于或等于scrollTop()值。

并在.scroll()添加了一些东西

 $(window).scroll(function() { if(isScrolledTo(sticky)) { sticky.css('position','fixed'); sticky.css('top','2px'); } var stopHeight = catcher.offset().top + catcher.height(); var stickyFoot = sticky.offset().top + sticky.height(); if(stickyFoot > footTop -10){ //Check if sticky's foot passes footer's top console.log("Top of Footer"); sticky.css({ position:'absolute', top: (footTop - 20) - sticky.height() }); } else { if ( stopHeight > sticky.offset().top) { console.log("Default position"); sticky.css('position','absolute'); sticky.css('top',stopHeight); } } }); 

希望能帮助到你。