【发布时间】:2021-11-12 09:51:27
【问题描述】:
我正在尝试让导航栏在部分之间移动,我会向下滚动。
我试图用 JS 来实现它,但我不能让它工作 当我点击事件监听器时它会改变活动类,但当我滚动时我无法让它工作
感谢您的帮助
这是我的js代码
let section = document.querySelectorAll('section')
let lists = document.querySelectorAll('.list');
function activeLink(){
lists.forEach((item) =>
item.classList.remove('active'));
this.classList.add('active');
}
lists.forEach((item) =>
item.addEventListener('click',activeLink));
window.onscroll = () =>{
section.forEach(sec =>{
let top = window.scrollY;
let offset = sec.offsetTop;
let height = sec.offsetHeight;
let id = sec.getAttribute('id');
if(top >= offset && top < offset + height){
lists.forEach(sec =>{
activeLink;
})
}
})
};
这是我的html
<nav class="navigation">
<ul>
<li class="list active">
<a href="#home">
<span class="icon">
<ion-icon name="home-outline"></ion-icon>
</span>
<span class="title">Home</span>
</a>
</li>
<li class="list">
<a href="#about">
<span class="icon">
<ion-icon name="person-outline"></ion-icon>
</span>
<span class="title">About Me</span>
</a>
</li>
<li class="list">
<a href="#working">
<span class="icon">
<ion-icon name="newspaper-outline"></ion-icon>
</span>
<span class="title">Working</span>
</a>
</li>
<li class="list">
<a href="#">
<span class="icon">
<ion-icon name="code-slash-outline"></ion-icon>
</span>
<span class="title">Learned</span>
</a>
</li>
<li class="list">
<a href="#contact">
<span class="icon">
<ion-icon name="chatbox-outline"></ion-icon>
</span>
<span class="title">Contact</span>
</a>
</li>
</ul>
</nav>
【问题讨论】:
-
我不确定你的问题是否正确,但对我来说这听起来像是一个固定的导航栏,不是吗?为什么不直接设置
position: fixed? -
它在位置:固定,我尝试让导航栏在滚动时在部分之间移动
-
fixed 表示它与您的视口相关,因此它应该在部分之间自动移动。也许您也可以提供您的 HTML,以便更好地关注。
-
我添加了 HTML
标签: javascript frontend navbar nav onscroll