固定在滚动上的位置在到达顶部之前开始(顶部div)

时间:2014-02-07 12:51:58

标签: javascript css position fixed

我现在已经#filter(我的侧栏白名单)成为fixed 当它到达顶部并在滚动期间停留在那里直到它到达脚并释放。

我的问题是,我的头部有一个<div>框,位于fixed, 因此,从页面顶部开始不会修复#filter。 这意味着在它附加到固定位置之前我得到一个抓举。 如何在到达顶部之前让它成为fixed 40px?

jsfiddle

$(function() {
    var top = $('#filter').offset().top,
        footTop = $('#outside_footer_wrapper').offset().top,
        maxY = footTop - $('#filter').outerHeight();
        console.log(top , footTop, maxY);

    $(window).scroll(function(evt) {
        var y = $(this).scrollTop();
        console.log(y);
        if (y > top) {
            console.log('mayor');
            $('#filter').addClass('fixed').removeAttr('style');
            if (y > maxY-130){
                var min = y - maxY + 130;
                console.log('mayor y menor', min);
                $('#filter').css('top','-'+min+'px');
            }
        } else {
            $('#filter').removeClass('fixed');
        }

    });
});

1 个答案:

答案 0 :(得分:0)

将if语句添加/更改为:

console.log(y);
if (y >= (top-y)) {

这是链接jsfiddle

<强>更新

将其更改回此$('#filter').css('top','-'+min+'px');

updated jsfiddle