当前位置: 首页 > 知识库问答 >
问题:

如何确定最接近顶部的部分

宫俊远
2023-03-14

我制作了一个带有导航条的多节登录页,其中包含指向页面各节的链接。我需要为最靠近页面顶部的节的链接提供一个活动类。我尝试使用滚动事件侦听器,但它无法正常工作

//通过为当前部分提供导航栏活动状态来响应滚动

``document.addEventListener("scroll", function() {
  const scrollPos = document.body.scrollTop;
  let pos = 0;
  for (let i = 0; i < sec.length; i++) {
    // determining pos of current section
    pos+=sec[i].offsetHeight ;
    let secPos = sec[i].getBoundingClientRect().y;
    secPos - scrollPos <= 0 && secPos + pos >= scrollPos ? list[i].classList.add("active") : list[i].classList.remove("active")
    }
  });```

共有1个答案

胡越泽
2023-03-14

滚动事件正在正常工作,但是您的代码没有正确地处理您要列出的元素列表。

只是尝试更改list[]sec[]

document.addEventListener( "DOMContentLoaded", function() {
 let sec = document.querySelectorAll('section');
  console.log(sec);
 sec[0].classList.add("active") 
 document.addEventListener("scroll", function() {
  const scrollPos = document.body.scrollTop;
  let pos = 0;
  for (let i = 0; i < sec.length; i++) {
    // determining pos of current section
    pos+=sec[i].offsetHeight ;
    let secPos = sec[i].getBoundingClientRect().y;    
    if ((secPos - scrollPos <= 0) && (secPos + pos >= scrollPos))   
      sec[i].classList.add("active");
    else
      sec[i].classList.remove("active");
    
  }
   
})
})
section {
  font-size:  80px;
  text-align: center;
  width: 300px;
  margin: 20px auto;
  background-color: pink;
  border: 1px solid red;
}

section.active {
  border: 1px solid blue;
  background-color: cyan;
}
<section>1</section>
<section>2</section>
<section>3</section>
<section>4</section>
<section>5</section>
<section>6</section>
<section>7</section>
<section>8</section>
 类似资料:
  • 我有四个内部框架和三个按钮在里面。当我点击最大化按钮,最大化,但它重叠所有的框架。但我的观点是,它应该显示最小化的框架。请找到下面的代码

  • 问题内容: 我不确定我是否完全理解这两者之间的区别。 有人可以解释为什么我要在另一个上使用它们,以及它们之间的区别吗? 问题答案: 用于通过使用属性来调整元素。 用于测量相对于上一个元素到元素的外部距离。 此外,行为可以依赖于位置,种类而不同,或。

  • 我正在尝试做一个工具栏作为这个图像(应用程序topbar): 我想添加按钮,取消和保存,如上图所示。我正试图用ToolbarItems实现这一点,但我得到了[...]按钮,它实际上充当“下拉列表”。 有没有办法让它成为第一个形象?多谢了。

  • 我有一个JPanel,在我点击一个按钮后,我希望图标垂直显示,一个在顶部,另一个在底部点击第二个图标,依此类推。 因此,每次点击时,图标位置会在顶部和底部之间交替变化。 我尝试了许多布局经理,但似乎无法让它像我希望的那样工作。 编辑:举例, 第一次点击后; 二次点击, 第三次点击,顶部的另一个图标,依此类推。这样做的目的是添加到我正在创建的国际象棋游戏中。所以我希望死棋子出现在适当的玩家端(黑色或

  • 问题内容: 我知道可以使用以下语法让vim在特定的行号处打开文件: 但是,我希望以指定的行在编辑器窗口的顶部而不是在中间打开。 问题答案: 您可以发出:打开文件,所以像后。

  • 问题内容: 我正在处理图像,并想确定一组像素是否更接近白色或黑色。 因此,给定一组 颜色/像素 ,如何确定它们接近白色还是黑色? 我尝试了一些笨拙的算法,有人知道我该怎么做吗? 问题答案: 我要说的是,您可以先将颜色转换为灰度,然后检查它是否更接近黑色或白色。 首先将RGB颜色值转换为通过以下公式计算亮度 然后检查该值是接近于0还是255,并相应地选择黑色或白色 请注意,如果未对颜色空间进行伽玛压