滚动时固定侧栏的计算

时间:2015-03-05 13:11:35

标签: javascript jquery html css

我使用绝对位置将侧边栏粘贴到父div的可见顶部。例如。父DIV位于整个屏幕的X:20%和Y:20%。 Inside Parent Div我有一个侧边栏DIV,其绝对值设置为Top:0和Right:0。

当父div滚动时,我增加margin-top,使其始终位于可视区域的顶部。我一直在努力计算这个,并且似乎无法得到pageOffset,scollTop等之间的差异。我已经通过w3schools并且它仍然没有意义。

这是我到目前为止的计算但由于某种原因在IE中侧边栏跳跃。任何帮助将不胜感激。提前致谢

var s = $(".sidebar");
var pos = s.position();
$(window).scroll(function () {
    var windowpos = $(window).scrollTop();
    (windowpos >= 270) ? s.css("marginTop", Math.floor($(window).scrollTop() - 270) + "px") : s.css("marginTop", 0);
});

1 个答案:

答案 0 :(得分:0)

如果我理解正确,这应该是一个很好的例子:

var s = $(".sidebar");
var pos = s.offset().top;

    $(window).scroll(function () {
        if ($(window).scrollTop() >= pos) {
            s.addClass('new-styles');
        } else {
            s.removeClass('new-styles');
        }
    });

风格:

.sidebar {
    position: absolute; // or relative
    top: 100px;
}
.new-styles {
    position: fixed;
    top: 0;
}