javascript – 如果向下滚动屏幕的顶部有一个div [重复]

这个问题已经有一个答案在这里:            >            How can I make a div stick to the top of the screen once it’s been scrolled to?                                    19个答案                            我有一个div,当我的页面第一次加载,从顶部大约100px(它拥有一些按钮等页面)。

当用户滚动过去,我想让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);
    });

这只是简单地添加一个粘性CSS类,当页面滚动通过它,并删除类时,它的备份。

CSS类看起来像这样

  #the-sticky-div.sticky {
     position: fixed;
     top: 0;
  }

EDIT-修改代码缓存jQuery对象,现在更快。

http://stackoverflow.com/questions/2907367/have-a-div-cling-to-top-of-screen-if-scrolled-down-past-it

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 如果向下滚动屏幕的顶部有一个div [重复]