티스토리 뷰
https://garenchoi.github.io/webs_class/javascript/effect/parallaxEffect01.html
document.querySelectorAll("#parallax__nav li a").forEach(li => { //아이디 parallax__nav의 li태그의 a태그들 선택해서 index값 li에 저장
li.addEventListener("click", (e) => { //li를 클릭했을 때 이벤트 설정
e.preventDefault(); //클릭했을 때 이벤트 초기화(a태그 초기화)
document.querySelector(li.getAttribute("href")).scrollIntoView({ //li의 href값으로 이동
behavior:"smooth"; //부드럽게 이동
});
});
});
window.addEventListener("scroll", () => { //브라우저에 스크롤 했을 때 이벤트 설정
let scrollTop = window.pageYOffset || document.documentElement.scrollTop || window.scrollY;
//변수 scrollTop에 브라우저의 pageYOffset값 또는 html의 scrollTop값 또는 브라우저의 scrollY값 저장
document.querySelectorAll(".content__item").forEach((element, index) => { //클래스 content__item들 선택해서 element값을 element에 index값을 index에 저장
if(scrollTop >= element.offsetTop - 2){ //scrollTop값이 element의 offsetTop-2 보다 크거나 같을 때
document.querySelectorAll("#parallax__nav li").forEach(li => { //아이디 parallax__nav의 li태그들을 선택해서 index값을 li에 저장
li.classList.remove("active"); //li에서 클래스 active 삭제
});
document.querySelector(`#parallax__nav ul li:nth-child(${index+1})`).classList.add("active"); //아이디 parallax__nav의 index+1번째 li태그에 클래스 active 추가
};
});
});
'Script Sample > Parallax Effect' 카테고리의 다른 글
parallaxEffect06 (0) | 2022.03.11 |
---|---|
parallaxEffect05 (0) | 2022.03.11 |
parallaxEffect04 (0) | 2022.03.11 |
parallaxEffect03 (0) | 2022.03.07 |
parallaxEffect02 (0) | 2022.03.07 |
댓글
© 2018 webstoryboy