【问题标题】:Return Navbar to Original Position After Scrolling滚动后将导航栏返回到原始位置
【发布时间】:2015-12-01 23:35:36
【问题描述】:

我已经设置了这个页面,当您滚动到导航栏顶部时,它会变得粘滞并停留在页面顶部。

当您滚动回页面顶部时,我希望它回到原来的位置。

这是我现在的工作的CodePen。我应该如何改变 jQuery 让它回到原来的位置?

$(window).on('scroll', function () {

    var $header = $("#header"),
        scrollTop = $(window).scrollTop(),
        elementOffset = $header.offset().top,
        distance = (elementOffset - scrollTop);

    if (distance < 0) {
        $header.css({
            "position": "fixed",
            "top": "0px",
            "left": "0",
            "right": "0"
        });
    }
});

现在,当用户向下滚动页面时,这就是我将标题元素更改为固定元素的方式。

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    换一种方式思考解决方案:

    CSS

    .affix {
        position:fixed;
        top:0;
        left:0;
        right:0;
    }
    

    JS

    if (distance < 0) {
        $header.addClass("affix");
    } else {
        $header.removeClass("affix");
    }
    

    【讨论】:

    • 我试过这个,它可以工作,但是当你滚动过去时,没有任何样式适用,它呈现为直接的 html。就好像当我滚动过去时它会删除原始样式并且不添加新样式,然后在我向上滚动时重新添加它。
    • @apizzimenti 可能你的类名有冲突,把.affix改成别的。
    • 类的应用程序正常工作,但是当我在应用.affix 类后滚动时,它会闪烁。我查看了开发人员工具,它不断在.affix 和默认的.header 类之间来回切换。我该如何解决这个问题?
    • @apizzimenti 我觉得你的 distanceTop 有逻辑错误,试试if (scrollTop &gt; 50)
    猜你喜欢
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多