728x90
페럴럭스 이펙트
offsettop 와 scrollTop을 이용하여 메뉴 선택창이 해당 메뉴에 진입되었을때 색이 바뀌는 효과를 만들어 보았습니다.
하지만 이런경우는 대부분 과부화를 일으키기 때문에 조심히 사용하는게 좋을것 같습니다.
scroll관련 코드들 간단요약
먼저 scrollTop 에 조건을 걸어 모든 웹브라우저에 스크롤값을 구합니다.
let scrollTop = document.documentElement.scrollTop || window.pageYOffset || window.scrollY;
scroll.innerText = Math.round(scrollTop);
이제 각 section 에 있는 아이디값을 찾아 이전에 구한 scrollTop 와 세션에있는 offsetTop 값을 비교해
nav에있는 li 요소에 클래스를 추가 해줍니다.
const contentItem = document.querySelectorAll(".content__item");
contentItem.forEach((el, i) => {
if (scrollTop >= document.getElementById(el.getAttribute("id")).offsetTop - 2) {
document.querySelectorAll("#parallax__nav li").forEach((li) => {
li.classList.remove("active");
});
document.querySelector("#parallax__nav li:nth-child(" + (i + 1) + ")").classList.add("active");
}
마지막으로 메뉴 탭을 클릭할때 이동하는 효과를 주기위해 scrollIntoView({ behavior: "smooth" } 작성했습니다.
document.querySelectorAll("#parallax__nav li a").forEach((li) => {
li.addEventListener("click", (e) => {
e.preventDefault();
document.querySelector(li.getAttribute("href")).scrollIntoView({ behavior: "smooth" });
});
});
728x90
반응형
'JavaScript > Effect' 카테고리의 다른 글
이펙트 응용편 - 마우스 이펙트 두번째 (1) | 2022.09.19 |
---|---|
이펙트 응용 편 - 페럴럭스 이펙트 두 번째 (9) | 2022.09.08 |
이펙트 응용편 | 마우스 이펙트 첫 번째 (2) | 2022.09.06 |
슬라이드 이펙트 세 번째 (1) | 2022.09.02 |
슬라이더 이펙트 두번째 - 좌우로 보여주기 (9) | 2022.08.29 |
댓글