티스토리 뷰
설명
현재 스크롤값과 이전 스크롤값에 따라서 스크롤을 내릴땐 메뉴바가 숨어있지만 스크롤을 올리면 메뉴바가 나타납니다.
현재 스크롤값과 이전 스크롤값을 setInterval()메서드를 이용해 실시간으로 값을 구해준 뒤 현재스크롤 값이 이전 스크롤값 보다 높으면 스크롤이 내려가고 있는 것 입니다. 이때는 메뉴바를 숨겨놓습니다.
그리고 현재 스크롤 값이 이전 스크롤값 보다 작을경우 스크롤이 올라가고 있는 것 입니다. 이때는 메뉴바가 나타납니다.
window.addEventListener("scroll", () => {
let scrollTop = window.pageYOffset || document.documentElement.scrollTop || window.scrollY;
document.querySelector(".scrollTop span").innerText = Math.round(scrollTop);
document.querySelectorAll(".content__item").forEach((el, index) => {
if(scrollTop >= el.offsetTop -2){
document.querySelectorAll("#parallax__nav ul li").forEach(li => {
li.classList.remove("active")
})
document.querySelector("#parallax__nav ul li:nth-child("+(index+1)+")").classList.add("active")
}
})
})
let nowScroll = true; //내가 스크롤링을 하고있다는걸 감지
let lastScroll = 0;
function scrollProgress(){
nowScroll = true;
setInterval(() => { //시간차를 이용해서 이전위치와 현재 위치를 비교
if(nowScroll){
nowScroll = false;
hasScroll();
}
}, 300);
console.log(nowScroll)
}
function hasScroll(){
let scrollTop = window.pageYOffset || document.documentElement.scrollTop || window.scrollY;
if(scrollTop < lastScroll){
document.querySelector("#parallax__nav").classList.add("show")
} else {
document.querySelector("#parallax__nav").classList.remove("show")
}
lastScroll = scrollTop;
console.log("lastScroll : " + lastScroll)
}
window.addEventListener("scroll", scrollProgress)
document.querySelectorAll("#parallax__nav li a").forEach(li => {
li.addEventListener("click", (e) => {
e.preventDefault();
document.querySelector(li.getAttribute("href")).scrollIntoView({
behavior:"smooth"
})
})
})
'Script Sample > Parallax Effect' 카테고리의 다른 글
Parallax Effect - 텍스트 효과 (0) | 2022.03.11 |
---|---|
Parallax Effect - 이질감 효과 (0) | 2022.03.11 |
Parallax Effect - 나타나기 효과 (0) | 2022.03.11 |
Parallax Effect - 사이드 메뉴 이동 (0) | 2022.03.11 |
Parallax Effect - 메뉴 이동 (0) | 2022.03.11 |
댓글
© 2018 webstoryboy