我想仅在用户滚动到页面顶部时才在移动设备上显示导航栏。
目前,每当用户向下或向上滚动时,它都会卡在顶部。 我正在使用这里的代码:https://stackoverflow.com/a/42250478/1788961 下面是示例:https://www.codeply.com/go/H7ZKuxKTKm
我的JS代码:
new IntersectionObserver(function(e,o){
if (e[0].intersectionRatio > 0){
document.documentElement.removeAttribute('class');
} else {
document.documentElement.setAttribute('class','stuck');
};
}).observe(document.querySelector('.trigger'));
编辑:澄清我想要什么:
我不希望移动设备上的导航栏具有粘性。它应该与网站的其余部分一起滚动。但是,如果我在页面底部并且滚动到顶部,则导航栏应该出现在顶部,只要我滚动到顶部,导航栏就会停留在那里。
您将使用 CSS 媒体查询仅在移动设备上应用position:sticky
(即<768px(...
.sticky-top {
position: static;
}
@media (max-width:768px) {
.sticky-top {
transition: all 0.25s ease-in;
position: sticky;
}
.stuck .sticky-top {
background-color: #222 !important;
padding-top: 3px !important;
padding-bottom: 3px !important;
}
}
https://www.codeply.com/go/1b80jD3Tpg
如果您想要相反的效果(移动设备上的非粘性导航栏(,只需将媒体查询反转为min-width
而不是最大宽度......
@media (min-width:768px) {
.sticky-top {
transition: all 0.25s ease-in;
position: sticky;
}
.stuck .sticky-top {
background-color: #222 !important;
padding-top: 3px !important;
padding-bottom: 3px !important;
}
}
https://www.codeply.com/go/4RtpB24k23
类"sticky-top"使导航栏粘在页面顶部,即使用户滚动也是如此。将其关闭可以解决您的问题。
此处的示例:https://www.codeply.com/go/wWKGkjYdGy