可以使用“节点.getBoundingClientRect()”的方法,这是某元素距离视窗上下左右的距离,这里使用绝对值是防止一直为负数,预防判定一直为true,当滚动条高度达到指定楼层范围时给楼层按钮添加激活样式。
window.addEventListener('scroll' , function(){
// 使用getBoundingClientRect() -- 获取某元素上下左右分别距离浏览器视窗的长度
// sectionNode为对应楼层节点
sectionNode.forEach(function(v , i){
// 使用Math.abs取到绝对值
if(Math.abs(v.getBoundingClientRect().top) <50){ // 50设定值可修改
// 循环楼层按钮
liNodes.forEach(function(v){
// blueLine为激活样式
v.classList.remove('blueLine');
})
liNodes[i].classList.add('blueLine');
}
})
})