用户向上/向下滚动时如何隐藏/显示导航栏

the*_*ore 15 javascript css jquery html5

用户向上/向下滚动时隐藏/显示导航栏

以下是我想要实现的示例: http ://haraldurthorleifsson.com/http://www.teehanlax.com/story/readability/

向上滚动时导航栏在屏幕上向上滑动,向上滚动时向下滑动屏幕.我已经想出了如何使用淡入/淡出来实现它,但我想用与示例中完全相同的动画来实现它.注意:我已经尝试过SlideIn(),就像它进行拉伸动画一样......

JQUERY:

var previousScroll = 0,
headerOrgOffset = $('#header').offset().top;

$('#header-wrap').height($('#header').height());

$(window).scroll(function() {
    var currentScroll = $(this).scrollTop();
    console.log(currentScroll + " and " + previousScroll + " and " + headerOrgOffset);
    if(currentScroll > headerOrgOffset) {
        if (currentScroll > previousScroll) {
            $('#header').fadeOut();
        } else {
            $('#header').fadeIn();
            $('#header').addClass('fixed');
        }
    } else {
         $('#header').removeClass('fixed');   
    }
    previousScroll = currentScroll;
});
Run Code Online (Sandbox Code Playgroud)

CSS:

#header {
    width: 100%;
    z-index: 100;
}

.fixed {
    position: fixed;
    top: 0;
}

#header-wrap {
    position: relative;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

    <div id="header-wrap">
    <div id="header" class="clear">
        <nav>
            <h1>Prototype</h1>
        </nav>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Dom*_*Day 15

要使导航的内部内容向上滑动而不是逐步隐藏,您需要在父元素上执行动画,并将内部元素保留在父元素的底部,如下所示:

的jsfiddle

<div id="header-wrap">
    <div id="header" class="clear">
        <nav><h1>Prototype</h1>another line<br/>another line
        </nav>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

body {
    height: 1000px;
}

#header {
    width: 100%;
    position: absolute;
    bottom: 0;
}

#header-wrap {
    width: 100%;
    position: fixed;
    background-color: #e0e0e0;
}
Run Code Online (Sandbox Code Playgroud)

JS

var previousScroll = 0,
    headerOrgOffset = $('#header').height();

$('#header-wrap').height($('#header').height());

$(window).scroll(function () {
    var currentScroll = $(this).scrollTop();
    if (currentScroll > headerOrgOffset) {
        if (currentScroll > previousScroll) {
            $('#header-wrap').slideUp();
        } else {
            $('#header-wrap').slideDown();
        }
    } else {
            $('#header-wrap').slideDown();
    }
    previousScroll = currentScroll;
});
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 2

你尝试过动画吗?但将 替换-60px为导航栏的高度。但消极的。

$(window).scroll(function() {
    var currentScroll = $(this).scrollTop();
    console.log(currentScroll + " and " + previousScroll + " and " + headerOrgOffset);
    if(currentScroll > headerOrgOffset) {
        if (currentScroll > previousScroll) {
            $('#header').animate({
                 top: '-60px'      //Change to Height of navbar
            }, 250);               //Mess with animate time
        } else {
            $('#header').animate({
                 top: '0px'
            },250);
            $('#header').addClass('fixed');
        }
    } else {
         $('#header').removeClass('fixed');   
    }
    previousScroll = currentScroll;
});
Run Code Online (Sandbox Code Playgroud)