javascript - 不使用 jQuery 突出显示事件 anchor 链接

标签 javascript html css

我正在构建一个只有一个页面的网站,但有不同的部分,例如主页、关于、联系方式等。我使用 anchor 标记滚动浏览页面的不同部分。我在页面顶部有一个固定的导航菜单,我想在导航链接中指出当前哪个部分处于事件状态。

我现在正在学习 JavaScript,所以我不知道该怎么做。我还想避免使用 jQuery。

最佳答案

我会使用hashchange event为了这。每当它触发时,通过添加/删除类来更新您的导航。在下面的示例中,该类称为“active”。

window.addEventListener("hashchange", updateActiveNavigationEntry);

function updateActiveNavigationEntry () {
  // query currently active item
  const currentActiveItem = document.querySelector('#navigation a.active');
  // remove active class
  if (currentActiveItem) currentActiveItem.classList.remove("active");
  // query new active item
  const newActiveItem = document.querySelector('#navigation a[href="'+ window.location.hash +'"]');
  // add active class to new entry
  if (newActiveItem) newActiveItem.classList.add("active");
}
.active {
  background: red;
}
<div id="navigation">
  <a href="#section01">section01</a>
  <a href="#section02">section02</a>
  <a href="#section03">section03</a>
</div>

关于javascript - 不使用 jQuery 突出显示事件 anchor 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62466427/

相关文章:

javascript - 为什么量词不起作用

javascript - 调用引用对象属性的方法会抛出 ReferenceError

javascript - 使用 Node child_process 的标准输出缓冲区问题

javascript - 更改动态添加元素的字体大小

带有省略号的 CSS3 flexbox 布局在移动 Safari 上不起作用

html - 遇到移动与桌面样式的问题

javascript - 应用适用于 block 中许多元素的状态更改

php - 制作一个恒定的标题 - css 问题

html - 将 Img 高度和宽度设置为 100% 而不缩放

javascript - 在 Facebook 上分享 Canvas