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
要使导航的内部内容向上滑动而不是逐步隐藏,您需要在父元素上执行动画,并将内部元素保留在父元素的底部,如下所示:
<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)
你尝试过动画吗?但将 替换-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)
| 归档时间: |
|
| 查看次数: |
45080 次 |
| 最近记录: |