javascript - 即使向下滚动,导航栏也会在第二页上出现一小段时间
问题描述
我将导航栏的位置设置为绝对位置,但在第一页之后,我希望它在向上滚动时出现在屏幕顶部。所以我把它的位置改为固定的。但即使向下滚动,它也会在第二页上出现一小会儿。
这是我的代码。
const nav = document.getElementsByClassName("nav")[0];
var scrolled = false;
var prevScrollPos = window.pageYOffset;
window.onscroll = function() {
if (window.pageYOffset > window.innerHeight) {
if (!scrolled) {
scrolled = true;
}
var currScrollPos = window.pageYOffset;
if (currScrollPos - prevScrollPos > 30) {
nav.classList.add("fixHide");
nav.classList.remove("fixShow");
prevScrollPos = currScrollPos;
} else if (prevScrollPos - currScrollPos > 30) {
nav.classList.add("fixShow");
nav.classList.remove("fixHide");
prevScrollPos = currScrollPos;
}
} else {
if (scrolled) {
nav.classList.remove("fixHide");
nav.classList.remove("fixShow");
scrolled = false;
}
prevScrollPos = window.pageYOffset;
}
}
body {
height: 300vh;
margin: 0;
padding: 0;
}
.nav {
box-sizing: border-box;
width: 100vw;
max-width: 100%;
height: 20vh;
margin: 0;
padding: 0;
background-color: black;
position: absolute;
top: 0;
display: flex;
align-items: center;
justify-content: center;
transition: 250ms;
}
.fixHide {
position: fixed;
top: -20vh;
}
.fixShow {
position: fixed;
top: 0;
}
.nav p {
color: white;
margin: 0;
padding: 0;
}
.page1, .page2, .page3 {
box-sizing: border-box;
height: 100vh;
margin: 0;
padding: 0;
}
.page1 {
border: 1px solid red;
position: relative;
z-index: 1;
}
.page2 {
background-color: blue;
}
.page3 {
background-color: green;
}
<div class = "nav">
<p>Top nav bar</p>
</div>
<div class = "page1">
</div>
<div class = "page2">
</div>
<div class = "page3">
</div>
scrolled 变量只是检查它是否已经滚动过第一页。我还想让导航栏在重新进入第一页时平滑上升。目的
解决方案
推荐阅读
- c# - 使用 C# 的当前应用程序的活动时间
- javascript - 如何创建自定义钩子,其工作方式类似于 React with Typescript 中的类组件中的 setState
- matlab - 说话人识别系统中的欧几里得距离
- reactjs - 如何将选项卡导航器标题减少到状态栏?
- php - PHP - 从 XML 标记中删除前导和尾随空格
- html - 如果我们的文件名不是 index.html,为什么找不到浪涌显示页面?
- python - 我正在尝试使用 python 的 webbrowser 模块在 chrome 中打开 DINO Game
- openssl - 以 SagePay 网关形式将 mcrypt 升级为 OpenSSL 加密
- javascript - jQuery数据表 - 将行作为变量传递给模态
- node.js - 如何在mongodb集合中为不存在的月份返回0