【发布时间】:2019-06-25 17:44:39
【问题描述】:
我正在尝试构建一个导航栏:
- 从高处开始
- 向下滚动时隐藏
- 向上滚动时显示缩小版本
- 完全滚动到顶部时会增长到全高
到目前为止,我找到了一种可行的方法。但必须有更有效的方法。我有一个隐藏和显示导航栏的功能——当我到达顶部时,一个间隔会再次增长。我尝试将它们结合起来,但总是失败...谢谢!
HTML
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<header id="navbar" class="navbar">
<a href="#home">Home</a>
<a href="#news">News</a>
<a href="#contact">Contact</a>
</header>
</body>
</html>
JavaScript
var prevScrollpos = window.pageYOffset;
var shrinkHeader = 200;
function tellMeAStory() {
}
window.onscroll = function() {
var currentScrollPos = window.pageYOffset;
if (prevScrollpos > currentScrollPos) {
document.getElementById("navbar").style.top = "0";
} else {
document.getElementById("navbar").style.top = "-200px";
$('.navbar').addClass('shrink');
}
prevScrollpos = currentScrollPos;
}
setInterval(function(){
var scroll = getCurrentScroll();
if (scroll < 10){
$('.navbar').removeClass('shrink');
} else {}
},250)
function getCurrentScroll() {
return window.pageYOffset || document.documentElement.scrollTop;
};
CSS
body {
margin: 0;
background-color: #f1f1f1;
font-family: Arial, Helvetica, sans-serif;
height: 2000px;
}
header {
background-color: #333;
position: fixed;
top: 0;
width: 100%;
display: block;
transition: all 0.3s;
height: 200px;
}
.grow{
height: 200px;
}
.shrink{
height: 50px;
}
#navbar a {
float: left;
display: block;
color: #f2f2f2;
text-align: center;
padding: 15px;
text-decoration: none;
font-size: 17px;
}
#navbar a:hover {
background-color: #ddd;
color: black;
}
JSFiddle
【问题讨论】:
标签: javascript jquery html css performance