当前位置: 首页 > 面试题库 >

向下滚动到屏幕上方时,div会紧贴屏幕顶部

翁钧
2023-03-14
问题内容

我有一个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类,而在备份时将其删除。

CSS类看起来像这样

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

编辑-修改后的代码可以更快地缓存jQuery对象。



 类似资料:
  • 问题内容: 我想创建一个div,它位于内容块的下方,但是一旦页面滚动到足以接触其顶部边界的位置,它就会固定在适当的位置并随页面滚动。 问题答案: 您可以简单地使用css,将元素定位为fixed: 编辑: 您应该将元素的位置设为绝对,一旦滚动偏移量到达该元素,则应将其更改为fixed,并将顶部位置设置为零。 您可以使用scrollTop函数检测文档的顶部滚动偏移量: 当滚动偏移量达到200时,该元素

  • 我试图移动这个图像: 在我的PyGame屏幕上,从右到左再向后,但是随着图像的移动,每隔一秒左右我就会有一点屏幕撕裂,就像这样: 我使用的代码是类似于此的循环: 到目前为止,我已经尝试了以下方法来解决这个问题: 在创建屏幕时使用,,标志,这没有效果,我也调整了更新为(因为使用?)时建议使用此选项) 在GPU和CPU之间拆分内存(我在raspberry pi 2上运行此功能)我尝试过为这两个处理器提

  • 我使用jqueryslidetoggle从页面顶部滑动一个div。效果正在发挥作用,可以在此处看到(请将鼠标悬停在会员登录导航按钮上方以查看效果,蓝色div将向下滑动): 我的问题是,当页面向下滚动时,div仍然从文档的顶部向下滑动,而不是从视口窗口的顶部向下滑动,因此它不可见。如果您向下滚动页面,并将鼠标悬停在右侧的会员登录按钮上,您将看到问题(主导航向下移动,但隐藏的蓝色div不再可见)。 我

  • 我正试着为我的孩子安装一个minecraft服务器,屏幕让我很舒服。我已经参考了本教程的答案。我在Ubuntu 16.04.5 x64上运行。我创建了以下服务文件,并将其链接到/etc/systemd/system/minecraft。服务 当我监视服务启动时,我在Journal alctl日志中得到以下内容: 根据我引用的SO帖子,我已经在/var/run/screen中更改了权限。这是当前的设

  • 本文向大家介绍在vue中实现禁止屏幕滚动,禁止屏幕滑动,包括了在vue中实现禁止屏幕滚动,禁止屏幕滑动的使用技巧和注意事项,需要的朋友参考一下 今天写了一个Vue弹层组件,用来全屏查看图片的,大概是下面这么一个效果: 其中背景是透明色的,但是弹出这个组件时手指滑动、鼠标滚轮滑动,底部页面是会动。 作为自己开发的一个常用的组件,这种bug当然是要解决的。 于是学艺不精的我在网上找了蛮久的,看了不少博

  • screen 模块用于检索有关屏幕大小,显示,光标位置等的信息 进程: 主进程 渲染进程​ screen 是一个 EventEmitter. 注意: app模块必须用在 ready事件后. 注意: 在渲染进程或开发者工具栏中, window.screen 是一个预设值的 DOM属性, 所以 var screen = require('electron').screen 这样写的话是无效的. 创建一