Javascript 固定在页边距顶部的Div定位:向上滚动时为20px

Javascript 固定在页边距顶部的Div定位:向上滚动时为20px,javascript,jquery,Javascript,Jquery,我有一个div,当你向上滚动时,我想从窗口顶部固定为20px,当你向下滚动时,从页脚固定为40px。我的代码似乎不稳定,一定有更好的方法吗 $(文档)。滚动(函数(){ 如果($(窗口).scrollTop()>=345){ $(#rightShipping').css({'position':'fixed','top':'0px'}); } if($(window).scrollTop()一个简单的想法-我会删除.rightCol块,只留下#rightShipping一个带有top:20px的

我有一个div,当你向上滚动时,我想从窗口顶部固定为20px,当你向下滚动时,从页脚固定为40px。我的代码似乎不稳定,一定有更好的方法吗

$(文档)。滚动(函数(){
如果($(窗口).scrollTop()>=345){
$(#rightShipping').css({'position':'fixed','top':'0px'});
}

if($(window).scrollTop()一个简单的想法-我会删除
.rightCol
块,只留下
#rightShipping
一个带有
top:20px
的块,它的父级带有
位置:relative
。然后使用以下代码:

$(document).scroll(function () {

    var scrollTop = $(window).scrollTop();

    var offsetTop = $('#rightShipping').offset().top;
    var positionTop = $('#rightShipping').position().top;

    if (scrollTop >= offsetTop - positionTop) {
        $('#rightShipping').css('position', 'fixed');
    } else {
        $('#rightShipping').css('position' : 'relative');
    }
});
我真的不知道这是否有效,因为我还没有测试过它,我需要一些睡眠,但我希望它能有所帮助

祝你好运!

可能的副本
$(document).scroll(function () {

    var scrollTop = $(window).scrollTop();

    var offsetTop = $('#rightShipping').offset().top;
    var positionTop = $('#rightShipping').position().top;

    if (scrollTop >= offsetTop - positionTop) {
        $('#rightShipping').css('position', 'fixed');
    } else {
        $('#rightShipping').css('position' : 'relative');
    }
});