我的菜单都准备好了,很好用,而且我现在的JS没有页面到处乱跳,这很好。我遇到的问题是,让我的“固定”导航向上/向下滑动,而不是突然出现。
目前,我使用的jQuery正在激活屏幕下方约300px~处的一个类,这将菜单位置从相对更改为固定。
请注意:我最初设法让这个静态定位,但在我的网站上与z-索引和其他一些元素有困难,所以我希望定位保持相对(不是静态)。我也不想用javascript以任何方式复制菜单(已经看到一些这样做的例子)。
当菜单位置更改为fixed时,如何使用jquery或css来实现slidedown和slideup效果?
下面是我的代码,非常感谢。
HTML格式:

<div class="nt-main-navigation-sticky">
    <!-- my nav, logo, etc, is in here. -->
</div>

CSS:
.nt-main-navigation-sticky {
    position: relative;
}


.activeScroll .nt-main-navigation-sticky {
    position: fixed;
    top: 0;
    left: 0;
}

查询:
// get my header height
var getHeaderHeight = $('.nt-main-navigation-sticky').outerHeight();


// add/remove body class
$(window).scroll(function() {

    if($(window).scrollTop() > getHeaderHeight + 200) {

        $('body').addClass('activeScroll').css('padding-top', getHeaderHeight);

    } else {

        $('body').removeClass('activeScroll').css('padding-top', 0);

    }

});

最佳答案

添加一个转换到您的CSS:

.nt-main-navigation-sticky {
    position: relative;
}


.activeScroll .nt-main-navigation-sticky {
    position: fixed;
    top: -50px; // or whatever the height of the navbar
    left: 0;
    transition: top 600ms;
}

And JS:
if($(window).scrollTop() > getHeaderHeight + 200) {

    $('body').addClass('activeScroll').css('padding-top', getHeaderHeight);
    $('.nt-main-navigation-sticky').css('top', '0px'); // will trigger transition

} else {
    $('.nt-main-navigation-sticky').css('top', '-50px'); // will trigger transition
    $('body').removeClass('activeScroll').css('padding-top', 0);

}

关于javascript - 相对固定位置-如何向下滑动?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39010104/

10-16 21:55