JavaScript实现DIV滚动到顶部固定效果

9 下载量 179 浏览量 更新于2023-03-16 收藏 27KB PDF 举报
"该资源提供了一个使用JavaScript实现的网页元素滚动到顶部时固定在顶部的实例代码,适用于创建导航栏等需要在滚动时保持可见的功能。在Internet Explorer浏览器下可能存在闪烁问题,但整体上提供了基本的实现思路和代码示例。" 在网页设计中,特别是在长页面布局中,为了保持关键内容(如导航菜单)始终可见,通常会使用一种叫做“固定定位”(fixed positioning)的技术。这个实例代码就是针对这一需求的一个应用,它利用JavaScript来检测用户滚动页面时的位置,当指定的`div`元素到达页面顶部时,将其固定在顶部,从而确保用户在浏览页面内容时,导航始终保持在视野内。 代码主要分为两个部分:HTML 结构和 JavaScript 逻辑。 HTML 部分创建了两个 `div` 元素,一个用于模拟页面内容,另一个是需要固定的菜单。菜单 `div` 被赋予了 ID `fixedMenu_keleyi_com`,并包含了一个无序列表 `ul`,用于展示链接。页面底部的 `div` 用于模拟页面的剩余内容,设置了较高的高度,以便于滚动。 JavaScript 部分引入了 jQuery 库,这是因为原生 JavaScript 的事件监听和滚动检测相对复杂,而 jQuery 提供了更加简洁的 API。未给出完整的 JavaScript 代码,但从描述来看,这部分代码应该包含了一个滚动事件监听器,当监听到滚动事件且菜单距离顶部的距离小于等于0时,将菜单的定位属性设置为 `fixed`,并可能设置适当的 `top` 值以使其保持在顶部。 需要注意的是,此实例在 Internet Explorer 浏览器下可能出现闪烁问题,这可能是由于浏览器对 `fixed` 定位的渲染差异或者 JavaScript 检测与页面重绘的同步问题导致的。为了解决这个问题,可以尝试使用更现代的浏览器兼容性技术,如使用 `requestAnimationFrame` 来优化滚动事件的处理,或者使用 CSS3 的 `position: sticky` 特性,这在现代浏览器中已经得到了广泛支持,且通常能提供更好的性能和用户体验。 这个实例对于初学者理解如何结合 JavaScript 和 CSS 实现滚动固定效果非常有帮助,同时也提醒开发者在跨浏览器开发时要考虑兼容性和性能优化。
1866 浏览量
一、遇顶固定的例子 我一直以为是某个div或层随屏幕滚动,遇顶则固定,离开浏览器顶部又还原这样的例子其实不少,其实它的名字叫“层的智能浮动效果”。目前我们在国内的商业网站上就常常看到这样的效果了。例如淘宝网的搜索结果页的排序水平条,在默认状态时,该工具条是跟随页面滚动的,如下图: 而当我们下拉滚动条,随着页面向下滚动,当此工具条接触到浏览器的上边缘时,这时就会独立出来固定在顶部,不跟随页面滚动而滚动了,如下图: 类似的例子效果我们在别的网站上都有看到过,例如腾讯微博首页上,当我们下拉屏幕浏览最新微博时,工具条也会出现这个效果,如下图: 这个效果看上去方便,贴心,也许还带推动广告的促销呢。原理其实很简单,本文展示两种方法。 二、智能浮动效果的实现原理 它分两种状态,一是默认状态,二是浮动固顶状态。 默认状态就是默认状态,什么也不用做,保持原有的CSS就好。无论有没有对它做定位,做了absolute也好,没做也好,都行。 关键是当浏览器屏幕滚动时,该对象div层要移除浏览器界面视区的时候,是要修改它的position属性,让它浮动在窗口的上沿显示就行了。最好的position属性是fixed,可以在IE6+和其他浏览器浮动层平滑的固定定位,由于IE6老大哥不支持fixed属性,所以可以另外赋予它absolute属性。当然也会产生副作用——滚动不平滑。不过也无所谓了,在微软公布不再修补更新XP漏洞,在中国360安全卫士的帮助下虽然大家仍然使用XP,但IE的用户已经是少之又少了。 那接下来,如何判断当前div层与浏览器窗口的上边缘接触了呢?遇到浏览器顶部了呢? 当浮动层div与浏览器窗口上边缘接触的一瞬间,其页面垂直偏移值与页面的滚动高度是一致的,所以我们就用这个进行判断。那如何获得页面上元素距离页面的垂直距离呢? 这里则是使用javaScript库实现。