728x90
반응형
페이지가 길다면 메뉴바는 있어야 한다.
메뉴바가 없다면 header가 있는 곳까지 다시 오는건 비효율적이라고 생각하기 때문이다.
그래서 스크롤 시 상단에 메뉴바가 나타나게 구현해야 한다.
메뉴바를 고정시키면 되지 않냐고?
header가 작은 페이지는 별로 없는 것 같은데 페이지를 내릴 때마다 header가 딸려 온다면
그만큼 다른 내용이 보이지 않기 때문에 이것도 비효율적이다.
그래서 나타나게 할 메뉴바는 최대한 필요한 것들만 모이고 크기를 차지 않게 만들어야한다.
처음에는 엄청 어려울 줄 알았는데 검색해서 이해한 결과로는 누구나 가능하다.
필요한 태그 목록이다.
<header>
헤더
</header>
<navbar>
나타날 메뉴바
</navbar>
<section>
본문
</section>
이런 형태를 가지기만 하면 되기 때문에 자신의 페이지에 맞게 커스터마이징하면 된다.
navBar를 안 보이는 영역에 숨겨 두었다가 js로 꺼내는 것이기 때문에 다음과 같이 navbar 설정을 해줘야 한다.
#navBar {
position: fixed;
top: -header.height;
width: 100%;
transition: top 0.5s;
}
-header.height란 헤더 태그 위에 둬야 하기 때문에 top에 - 값을 넣어 안 보이는 영역에 생성되게 한다.
0.5s는 메뉴바가 동작하는 속도이다.
마지막으로 JS로 스크롤 위치에 따라 top을 변경시켜 주면 끝이다.
<script>
window.onscroll = scrollF();
function scrollF() {
if(document.body.scrollTop > 200 || document.documentElement.scrollTop > 200){
document.getElementById('navBar').style.top = '0';
}else{
document.getElementById('navBar').style.top = '-200px';
}
</script>
header의 높이가 200이라고 했을 때를 예시로 작성했다.
스크롤 Top이 200이상이 되면 navBar의 top이 0이 되어 나타나도록 하는 코드이다.
반면에 200이하면 top이 -200px이 되어 보이지 않게 된다.
728x90
반응형
'~2023' 카테고리의 다른 글
[json/pandas] json 파일 읽어오기 및 데이터 프레임으로 만들기 (0) | 2021.06.14 |
---|---|
[Server] Ubuntu 20.04에서 Spring Boot 배포하기 (3) - Apache2 Reverse Proxy (0) | 2021.06.11 |
[CSS] 단락 높이를 화면에 꽉 맞게 지정하기 (0) | 2021.06.10 |
[Server] Ubuntu 20.04에서 Spring Boot 배포하기 (2) - Tomcat9 (0) | 2021.06.10 |
[Server] Ubuntu 20.04에서 Spring Boot 배포하기 (1) - Setup (0) | 2021.06.07 |