如何修改此导航栏以仅在 100px 后向下滚动时隐藏?
How to modify this navbar to hide on scroll down only after 100px?
我目前有一个导航栏,向下滚动时会消失,向上滚动时会再次出现(并且在页面顶部时始终可见)。
这在桌面上运行良好 - 当页面位于顶部时导航始终显示,但在移动设备上出现故障并在页面顶部时完全消失。
我如何将其修改为在向下滚动前 100 像素时可见,然后在用户向上滚动之前消失?
var prevScrollpos = window.pageYOffset;
window.onscroll = function () {
var currentScrollPos = window.pageYOffset;
if (prevScrollpos > currentScrollPos) {
document.getElementById('mainNav').style.top = '0';
} else {
document.getElementById('mainNav').style.top = '-100px';
}
prevScrollpos = currentScrollPos;
};
解决方案
var prevScrollpos = window.pageYOffset;
window.onscroll = function () {
var currentScrollPos = window.pageYOffset;
if (prevScrollpos > currentScrollPos || currentScrollPos <= 100) {
document.getElementById('mainNav').style.top = '0';
} else {
document.getElementById('mainNav').style.top = '-100px';
}
prevScrollpos = currentScrollPos;
};
您可以为滚动和非滚动页面的元素设置样式。请参阅下面的简单解决方案:
function update() {
window.document.body.setAttribute('data-scrolled', window.pageYOffset > 100 ? 'Y' : 'N');
}
window.onscroll = update;
window.onresize = update;
update();
body {
height: 4000px;
}
#test {
position: fixed;
}
body[data-scrolled="N"] #test {
color: blue;
}
body[data-scrolled="Y"] #test {
color: red;
}
<div id="test">Please scroll the page</div>
我目前有一个导航栏,向下滚动时会消失,向上滚动时会再次出现(并且在页面顶部时始终可见)。
这在桌面上运行良好 - 当页面位于顶部时导航始终显示,但在移动设备上出现故障并在页面顶部时完全消失。
我如何将其修改为在向下滚动前 100 像素时可见,然后在用户向上滚动之前消失?
var prevScrollpos = window.pageYOffset;
window.onscroll = function () {
var currentScrollPos = window.pageYOffset;
if (prevScrollpos > currentScrollPos) {
document.getElementById('mainNav').style.top = '0';
} else {
document.getElementById('mainNav').style.top = '-100px';
}
prevScrollpos = currentScrollPos;
};
解决方案
var prevScrollpos = window.pageYOffset;
window.onscroll = function () {
var currentScrollPos = window.pageYOffset;
if (prevScrollpos > currentScrollPos || currentScrollPos <= 100) {
document.getElementById('mainNav').style.top = '0';
} else {
document.getElementById('mainNav').style.top = '-100px';
}
prevScrollpos = currentScrollPos;
};
您可以为滚动和非滚动页面的元素设置样式。请参阅下面的简单解决方案:
function update() {
window.document.body.setAttribute('data-scrolled', window.pageYOffset > 100 ? 'Y' : 'N');
}
window.onscroll = update;
window.onresize = update;
update();
body {
height: 4000px;
}
#test {
position: fixed;
}
body[data-scrolled="N"] #test {
color: blue;
}
body[data-scrolled="Y"] #test {
color: red;
}
<div id="test">Please scroll the page</div>