好的,这是我实现的脚本。我一直想把它做成一个插件,但我一直忘记这样做,但它很容易定制。
$(window).scroll(function () {
var ntMin = 130;
var newTop = $(window).scrollTop();
if (newTop <= ntMin){
newTop = ntMin;
}
$("#navPane").stop()
.animate({'top': newTop}, "slow");
});
所以这里发生的事情是您正在向 WINDOW OBJECT 添加一个事件处理程序(为什么?因为这样如果有人在页面完全加载之前开始滚动,则移动的 div 将在页面完成时赶上,因此动画将保持流畅并在那里不会有任何样式故障)。然后,您声明一个变量 ,ntMin
您将其设置为您希望移动 div 移动到的最小距离值(从窗口顶部测量)。接下来,您要声明一个变量 ,newTop
并在页面上的当前滚动位置对其进行初始化。接下来,检查窗口是否移动到足以要求 div 移动。然后执行动画。
我会尽快给你发演示。我将尝试看看我是否可以先向您发送一个 html 版本。
如果您有任何问题,请告诉我。
编辑:
好吧,我不只是向您发送演示,而是将页面保存为 htm 页面,用 Lorem Ipsum 替换内容,并将结果添加到我的新开发站点上的页面中(它根本不完整 - 提前道歉)。这是演示的链接。
出于某种原因,我似乎遇到了一些权限问题,阻止了我的徽标出现在网站上(网站根本不完整哈哈),并且它导致了一个小故障,因为导航开始低于应有的水平,但是作为一旦您移动页面,它应该返回到正确的位置。同样的错误导致它的结束也比它应该的低一点,但是,作为一个整体,它仍然可以达到它的目的。如果您有任何问题,请告诉我,祝您好运!:)
更新:我没有机会为你创建插件,但我为你写了你需要的规范。请注意,我给您的规范不一定会产生最简单的解决方案——这是故意的。我设计它们的方式是让您可以轻松地编写脚本、测试它并自定义/扩展它,以便在将其转换为插件之前添加您需要的任何其他功能。他们来了:
- (I) 制作一个变量来保存滑动元素的当前(将是前一个)位置
- 每当窗口滚动时,此值将在代码末尾更新
- 该值将用于帮助确定滚动方向
- (二)制作一个管理滑动元素CSS变化的功能
- 此函数将从窗口滚动处理程序中调用
- 此函数将采用一组值 { scrollTop, direction, topStop, bottomStop, ele }
- ele 将是滑动元素的选择器
- 可能想要设计一个可重用的对象来保存这些值
- 可以采用这些值和在滚动函数中创建的局部变量
- 可以防止某些功能被多次执行
- 从长远来看,可以让事情变得更容易
- 对象将存储在 document.ready 处理程序的变量中
- 函数将确定是否移动元素
- 如果元素的方向是“向下”并且它还没有到达 (bottomStop - ele.height()) 移动
- 如果它已经到达bottomStop 然后不要移动(使用ele.css(top:scrollTop))
- 还必须检查以确保 ele.css("top") 是 > topStop
- 将上述反转为向上方向
- (三)创建窗口滚动功能:
- 创建局部变量来保存 scrollTop 的值
- 创建局部变量以保存布尔方向值
- 将 scrollTop 的值与滑动元素的前一个位置进行比较
- 如果值 scrollTop 更大,则将方向设置为指示“向下”的布尔值
- 否则,将方向设置为指示“向上”方向的布尔值
- 调用在 II 中创建的函数