Muscardinus

Scroll Top 본문

FrontEnd/Basic Skills

Scroll Top

Muscardinus 2022. 1. 31. 00:53
728x90

Scroll의 위치에 따른 Nav의 배경 색 변화에 자주 사용한다.

 

첫 번째 방법

// 첫 번째 방법
// 스크롤 이벤트가 발생했을 때
// 현재 스크롤 위치를 가져온다.
// 스크롤 위치를 바탕으로 active 클래스를 추가하거나 제거한다.

// Write JS Code Here!
window.addEventListener("scroll", (e) => {
    const top = window.scrollY || window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
    (top >= 50)
        ? nav.classList.add("active")
        : nav.classList.remove("active")
});

두 번째 방법

// 두 번째 방법
let oldValue = 0;

// 스크롤 이벤트가 발생했을 때

// 현재 스크롤 위치를 가져온다.

// oldValue, 스크롤의 위치와 연산 작업을 하여 active 클래스를 추가하거나 제거한다.

// oldValue를 스크롤 위치로 변경한다.

//Write JS Code Here!

window.addEventListener("scroll", (e) => {
    const newValue = window.scrollY || window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
    if (oldValue - newValue < 0) {
        nav.classList.add("active");
    }
    if (oldValue - newValue > 0) {
        nav.classList.remove("active")
    }
    oldValue = newValue;
});

 

세 번째 방법

// 세 번째 방법 (wheel은 firefox에서 지원되지 않음)
const isFireFox = (navigator.userAgent.indexOf("Firefox") !== -1);
const wheelEvt = isFireFox ? "DOMMouseScroll" : "wheel";
window.addEventListener(wheelEvt, mouseWheelEvent);

function mouseWheelEvent(e) {
    const delta = e.deltaY ? e.deltaY : -e.detail;
    (delta > 0)
        ? nav.classList.add("active")
        : nav.classList.remove("active");
}
728x90

'FrontEnd > Basic Skills' 카테고리의 다른 글

Dropdown Menu  (0) 2022.03.13
Auto Complete  (0) 2022.03.13
Search bar  (0) 2022.02.09
Scroll Spy  (0) 2022.01.31
Infinite Scroll  (0) 2022.01.31
Comments