我有一个div,当我的页面首次加载时,它离顶部约100像素(该页面包含一些按钮等)。
当用户滚动通过它时,我希望div“关注”该用户,因为它附着在屏幕顶部。当用户返回页面顶部时,我希望它返回到其原始位置。
Visualization - xxxxx is the div: Default (page load) User vertically scrolled well past it --------- --------- | | |xxxxxxx| < after div reaches top of screen when |xxxxxxx| | | page is scrolled vertically, it stays | | | | there --------- ---------
诀窍是您必须将其设置为position:fixed,但仅在用户滚动经过它之后才能设置。
可以通过将处理程序附加到window.scroll事件来完成此操作
// Cache selectors outside callback for performance. var $window = $(window), $stickyEl = $('#the-sticky-div'), elTop = $stickyEl.offset().top; $window.scroll(function() { $stickyEl.toggleClass('sticky', $window.scrollTop() > elTop); });
sticky当页面滚动经过时,这只是添加一个CSS类,而在备份时将其删除。
sticky
CSS类看起来像这样
#the-sticky-div.sticky { position: fixed; top: 0; }
编辑-修改后的代码可以更快地缓存jQuery对象。