【问题标题】:Position fixed on scroll starts before it reaches the top (top div)滚动上固定的位置在到达顶部之前开始(顶部 div)
【发布时间】:2014-02-07 12:51:58
【问题描述】:

我现在让#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');
        }

    });
});

【问题讨论】:

    标签: javascript css position fixed


    【解决方案1】:

    将 if 语句添加/更改为:

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

    这是链接jsfiddle

    更新

    改回这个$('#filter').css('top','-'+min+'px');

    updated jsfiddle

    【讨论】:

    • 你能设置一个起始值(距离顶部 20px)吗?
    • 然后只需将 20 添加到顶部变量...所以在 $(window).scroll 之前的任何位置
    • 当我使用你写的更改时,它会落在我不希望它做的脚上。
    • 究竟如何打印包含 20px 值的变量?
    • 我已经修复了页脚问题,忘记将 var 改回 min 而不是 yme。生病把它放在我的帖子上。另外,我没有得到你的最后一个问题
    猜你喜欢
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多