【发布时间】:2013-01-02 18:38:34
【问题描述】:
通过阅读一些相关问题,我意识到 twitter 引导附加组件根本没有 $.affix('refresh') 方法可用 - 我的问题虽然相关,但可能只是刷新之间的额外步骤,让我试着解释一下。
我有一个带有标准引导导航栏的页面。在其下方,一旦用户滚动经过 x 像素,我将附加一个“固定”的子导航(在我的情况下,导航栏的高度为 41 像素,因此在 41 像素时,词缀开始生效,并将 .affix 类更改为.affix {top:41px}一切都好)
所以对于第一个词缀,我可以使用 html-only 属性。
在页面的下方(本质上可以被认为是“第二页”)我有另一条导航,一旦用户滚动到某个位置,它应该“附加”并替换第一个子导航 - 考虑到该位置第二页/词缀因内容而异,我使用js计算第一页的高度并根据我得到的设置offset: {top:xxx}。
这也很有效/正如预期的那样,用户向下滚动一点,第一个子导航词缀启动,如果他继续滚动并到达页面下方的第二个子导航,它会启动并替换第一个词缀'ed sub-nav(实际上它本身并没有取代它,而是用更高的 z-index 覆盖)
从这里开始,我遇到了两个我无法找到解决方案的问题:
-
当用户重新调整窗口大小时,第一页的内容当然会变长,这会改变我在页面下方粘贴的原始偏移顶部尺寸。首先,我认为对
李>.affix('refresh')的简单调用将/可能是解决方案,但当然该方法甚至在组件上都不可用。接下来,我想我可以再次手动重新计算高度并重新创建$('.my-second-affix').affix({offset: {top:x-new-offset}});- 但由于某种原因,这似乎根本不起作用,我不知道为什么:( 接下来要解决的问题是我也在使用 jquery infinitescroll 来加载越来越多的页面...每个页面可能在不同阶段都有其他子导航,我想添加和替换上一个词缀现在位于顶部。
注意然后我还想确保如果用户向后滚动另一个方向,以前附加的子导航会重新附加自己向后退(我怀疑他们会很好只要词缀偏移正确)
希望这个解释足以突出我的问题,并且有人以前处理过这个问题,或者可以为解决方案提供一些指导。我试图让偏移量成为一个从顶部返回当前偏移量的函数(如另一个问题Twitter bootstrap change affix offset 中所述),但由于某种原因,它也不能按预期工作。
非常感谢任何帮助
【问题讨论】:
-
这绝不是答案,而是帮助。我与
$.fn.affix有类似的(尽管差异太大而无法适用)的情况。我必须编写一个在调整大小时触发的函数。我建议使用underscore或lodash或编写自己的debounce函数。对于减少 javascript 负载非常有用,并且还可以帮助防止更改期间的抖动。在这里编写自己的信息:davidwalsh.name/javascript-debounce-function -
如何将所有不同的子导航添加为引导导航中的第二行、第三行等,然后根据用户滚动的距离隐藏或显示它们?
标签: jquery twitter-bootstrap infinite-scroll window-resize