스크롤을 감지해 헤더를 숨기고 보여주기
개요
헤더를 고정시키는 작업까진 완수했지만, 헤더를 고정시킴으로 인해 단점들이 생겨났었다. 예를 들어, 메뉴를 눌렀을 때, 해당 장소로 이동하긴 하는데 타이틀이 있어야할 곳에 헤더가 가려버린다는 것이다.
이렇게 아니라 아래처럼 보여야한다.
헤더는 고정하고싶고, 타이틀은 보여주고싶었다. 그렇게 되면 모든 부분의 레이아웃을 조정하면 되는데 그러고 싶진않고.. 여러 사이트를 돌아다녀보면서 생각한 것이 스크롤을 내릴땐 헤더가 없고 살짝 올리면 생기는 그런 사이트들이 많았다.
개발
예전 코드에서
window.onscroll할때 scrollFunction이라는 함수를 호출하게 했었고,
window.onscroll = function () {
scrollFunction();
};
이 function안에서는 헤더의 보여주고 안보여줌을 결정했고 여기서 계산하면 된다.
케이스는 총 3개가 있고, 이에 따라 보여줌을 결정하면 되는데,
1. 스크롤이 가장 위에있는 경우 -> 헤더가 보인다
2. 스크롤이 가장 위가 아닌데, 스크롤이 올라가고 있다.
3. 스크롤이 가장 위가 아닌데, 스크롤이 아래로 내려가고있다 -> 헤더가 안보인다.
나는 아래와 같이 개발했다.
function scrollFunction() {
...
if(document.getElementById("header") != null){
let currScrollLoc = document.documentElement.scrollTop;
if ( currScrollLoc <= 20 ) {
document.getElementById("header")!.style.position = "relative";
}
else if(currScrollLoc > scrollLoc && scrollLoc > 0){
document.getElementById("header")!.style.position = "relative";
}
else {
document.getElementById("header")!.style.position = "fixed";
}
setScrollLoc(currScrollLoc);
}
}
아무튼 오늘도 프론트 앤드 개발자로서 한단계 성장 완료!
Author And Source
이 문제에 관하여(스크롤을 감지해 헤더를 숨기고 보여주기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@parkyw1206/스크롤을-감지해-헤더를-숨기고-보여주기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)