【发布时间】:2014-01-09 23:48:01
【问题描述】:
我的网页最右侧有一个 div (RightSide),它位于另一个 div (TopBanner) 的下方。即使用户向下滚动,TopBanner div 也会保持其在屏幕顶部的准确位置。正是我想要的。但我也希望 RightSide div(在 TopBanner 下方)即使在用户向下滚动时也能保持在原位。
我已经达到了大约 80%,但它的行为很奇怪。当您开始向下滚动时,RightSide 开始向上移动页面,直到它开始被 TopBanner 遮挡(在它后面),然后它突然弹回到它的固定位置,并在剩余的滚动过程中停留在那里。这是执行“弹回”的 jquery:
var stickerTop = parseInt($('#RightSide').offset().top);
$(window).scroll(function () {
$("#RightSide").css((parseInt($(window).scrollTop()) + parseInt($("#RightSide").css('margin-top')) > stickerTop) ? {
position: 'fixed',
top: '0px'
} : {
position: 'relative'
});
});
RightSide 的初始行为是在页面向上移动大约 100 像素,然后才弹回到正确的位置,这让我的老板和我们的用户发疯了。我已经尝试将“top:'0px'”更改为各种值,但这只会让事情变得更糟。
在我看来,“重新锚定”RightSide 的 jquery 直到我滚动了一百个像素左右才会被调用,然后它突然将 div 向下移动并在之后将其保持在正确的位置.
总结:我从不希望 RightSide 向上或向下移动,即使用户正在拖动垂直滚动条(滚动)。
如何做到这一点? (我真的不想为此使用 iframe。)谢谢。
【问题讨论】:
-
您能否发布您的其余代码,以便我们看到它的实际效果?如果它在 JSFiddle 或 JSbin 中,则为布朗尼点 :)
-
我愿意,但是代码量很大,而且大部分都没用。我已经发布了有用的位。您特别在寻找什么?我可以发布一些关于屏幕/滚动行为的视频片段,但不知道它是否有用。 RightSide div 只是一个典型的 div,其中包含一些 html。
-
好吧,我只是想确保我正确理解了您的问题。我想你想达到类似的效果(但右侧已经折叠,在导航栏下方而不是旁边)1054.fleeceitout.com(单击右侧的黑色标签以显示
RightSide在这种情况下) -
Deryck,你说得对。无论如何,正确的 div 都保持固定,这就是我正在寻找的。当您向下滚动时,顶部横幅会越过右侧 div 的顶部,此时它与我的场景几乎相同。除了我的顶部横幅总是覆盖我右侧横幅的顶部。我想事实上我右边横幅的顶部被顶部横幅覆盖了,而不仅仅是在它下面,这可能是我悲伤的原因。一些 z-indexing 正在覆盖它。
-
好吧,那个网站是我的,虽然那个正确标签的代码是我一生中最烦人的从头开始的项目,但一旦你把数字插入,它实际上很简单。我会发布在我快速完成某件事后,在这里完成你需要的东西(除非有人在这种情况下打败了我,对你来说更多:))
标签: javascript jquery css html