티스토리 뷰
https://garenchoi.github.io/webs_class/javascript/effect/parallaxEffect02.html
document.querySelectorAll("#parallax__dot a").forEach(el => { //아이디 parallax__dot의 a태그들을 선택해 element값을 el에 저장
el.addEventListener("click", e => { //el을 클릭했을 때 이벤트 설정
e.preventDefault(); //클릭했을 때 이벤트 초기화(a태그 초기화)
document.querySelector(el.getAttribute("href")).scrollIntoView({behavior: "smooth"}); //el의 href값으로 부드럽게 이동
});
});
window.addEventListener("scroll", () => { //브라우저에 스크롤 했을 때 이벤트 설정
let scrollTop = window.screenY || window.pageYOffset || document.documentElement.scrollTop;
//변수 scrollTop에 브라우저의 pageYOffset값 또는 html의 scrollTop값 또는 브라우저의 scrollY값 저장
document.querySelector(".scrollTop span").innerHTML = Math.round(scrollTop); //클래스 scrollTop의 span태그에 Math.round(scrollTop)값 출력
document.querySelectorAll(".content__item").forEach((el,i) => { //클래스 content__item들을 선택해 element값을 el에 index값을 i에 저장
if(scrollTop >= document.getElementById("section"+(i+1)).offsetTop){ //scrollTop값이 section(i+1)의 offsetTop값보다 크거나 같을 때
document.querySelectorAll("#parallax__dot li").forEach(li => { //아이디 parallax__dot의 li태그들을 선택해 element 값을 li에 저장
li.classList.remove("active"); //li에 클래스 active 삭제
});
document.querySelector(`#parallax__dot li:nth-child(${i+1})`).classList.add("active"); //아이디 parallax__dot의 (i+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 |
parallaxEffect01 (0) | 2022.03.02 |
댓글
© 2018 webstoryboy