3

我正在寻找一种 HTML5 / jquery 解决方案来将浮动 div(让我们称之为 div“A”)附加到父 div 的右侧(称之为“B”),并让 div A 在滚动期间停留在屏幕上但停止时它达到 div B 高度的顶部或底部。如果您已经看到留在屏幕上的浮动/绝对定位的社交媒体按钮(这是正确的概念),但我想将浮动限制为仅与 div B 的高度一样高或低。

下面是我制作的 概念动画Concept Animation

如果您查看 div B,我的目标是让浮动菜单在屏幕上沿其右侧上下滚动 div B 的高度,而不是高于或低于 div B。

非常欢迎任何建议/帮助/代码片段。先感谢您。

4

1 回答 1

1

好的,这是我实现的脚本。我一直想把它做成一个插件,但我一直忘记这样做,但它很容易定制。

    $(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 中创建的函数
于 2012-07-29T01:38:34.483 回答