>웹 프론트엔드 >JS 튜토리얼 >탐색 메뉴를 지정된 위치로 스크롤하는 강조 효과를 얻기 위해 JavaScript를 사용하는 방법은 무엇입니까?

탐색 메뉴를 지정된 위치로 스크롤하는 강조 효과를 얻기 위해 JavaScript를 사용하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-10-19 09:46:511665검색

如何使用 JavaScript 实现导航菜单滚动到指定位置的高亮效果?

JavaScript를 사용하여 탐색 메뉴를 지정된 위치로 스크롤하는 강조 효과를 얻는 방법은 무엇입니까?

탐색 메뉴는 웹 디자인의 일반적인 구성 요소 중 하나입니다. 사용자 경험을 향상시키기 위해 JavaScript를 사용하여 탐색 메뉴가 지정된 위치로 스크롤될 때 강조 표시 효과를 얻을 수 있습니다. 이러한 방식으로 사용자가 페이지를 스크롤하면 탐색 메뉴가 실시간으로 업데이트되어 현재 위치를 표시합니다.

이 효과를 달성하는 핵심은 페이지 스크롤 이벤트를 모니터링하고 현재 스크롤 위치와 지정된 위치 간의 관계를 확인하는 것입니다. 아래에서는 구체적인 예제 코드를 통해 이를 구현하는 방법을 설명하겠습니다.

먼저 HTML에서 탐색 메뉴를 정의하고 각 탐색 항목에 클래스 이름(예: "nav-item")과 사용자 정의 속성(예: "data-target")을 추가하여 탐색 항목을 지정해야 합니다. 해당 대상 위치.

<nav>
  <ul>
    <li class="nav-item" data-target="section1">导航项1</li>
    <li class="nav-item" data-target="section2">导航项2</li>
    <li class="nav-item" data-target="section3">导航项3</li>
  </ul>
</nav>

<section id="section1">内容1</section>
<section id="section2">内容2</section>
<section id="section3">内容3</section>

다음으로, 탐색 메뉴를 지정된 위치로 스크롤하는 강조 효과를 구현하는 JavaScript 코드를 작성합니다.

// 获取导航菜单中的所有导航项
const navItems = document.querySelectorAll('.nav-item');

// 监听页面滚动事件
window.addEventListener('scroll', () => {
  // 获取页面滚动的垂直位置
  const scrollPosition = window.scrollY;

  // 遍历导航项
  navItems.forEach(navItem => {
    // 获取该导航项对应的目标位置
    const target = navItem.getAttribute('data-target');
    
    // 获取目标位置的垂直位置
    const targetPosition = document.getElementById(target).offsetTop;

    // 判断当前滚动位置是否在目标位置的上方
    if (scrollPosition < targetPosition) {
      // 移除高亮样式
      navItem.classList.remove('active');
    } else {
      // 添加高亮样式
      navItem.classList.add('active');
    }
  });
});

위 코드에서는 먼저 querySelectorAll 메서드를 사용하여 모든 탐색 항목을 가져오고 scroll 이벤트를 통해 페이지 스크롤을 수신합니다. 스크롤 이벤트의 콜백 함수에서는 현재 페이지 스크롤의 수직 위치를 얻고 각 탐색 항목을 탐색합니다. querySelectorAll 方法获取所有的导航项,并通过 scroll 事件监听页面滚动。在滚动事件的回调函数中,我们获取当前页面滚动的垂直位置,并遍历每一个导航项。

对于每一个导航项,我们通过 getAttribute 方法获取其对应的目标位置,并通过 offsetTop

각 탐색 항목에 대해 getAttribute 메소드를 통해 해당 대상 위치를 얻고, offsetTop 속성을 ​​통해 대상 위치의 수직 위치를 얻습니다. 그런 다음 현재 스크롤 위치가 대상 위치 위에 있는지 확인합니다. 그렇다면 강조 스타일을 제거하고 그렇지 않으면 강조 스타일을 추가합니다.

마지막으로 CSS를 통해 탐색 항목의 강조 스타일을 정의하여 현재 위치를 반영할 수 있습니다.

.nav-item.active {
  color: red;
  font-weight: bold;
}

위의 코드 예제를 사용하면 지정된 위치 강조 효과로 스크롤하는 간단한 탐색 메뉴를 얻을 수 있습니다. 이러한 방식으로 사용자가 페이지를 스크롤하면 탐색 메뉴가 실시간으로 업데이트되어 사용자가 페이지를 탐색하고 탐색할 수 있도록 더 잘 안내합니다. 🎜

위 내용은 탐색 메뉴를 지정된 위치로 스크롤하는 강조 효과를 얻기 위해 JavaScript를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.