Я пытаюсь создать панель навигации, которая:
- начинается с большой высоты
- скрывается при прокрутке вниз
- показывает сокращенную версию при прокруткеup
- увеличивается до полной высоты при полной прокрутке к вершине
До сих пор я нашел способ, который работает.Но должен быть более эффективный путь.У меня есть функция, чтобы скрывать и показывать панель навигации - и один интервал, чтобы расти снова, когда я достиг вершины.Я пытался объединить их, но всегда не получалось ... Спасибо!
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
https://jsfiddle.net/Jimmey/wry54an7/4/