Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

CSS와 JavaScript로 아래로 스크롤할 때 내비게이션 메뉴 자동 숨기기 방법

웹 페이지를 아래로 스크롤할 때 상단에 고정된 내비게이션 메뉴가 자동으로 숨겨지고, 다시 위로 스크롤하면 나타나도록 구현하면 콘텐츠를 더 넓은 화면으로 볼 수 있어 사용자 경험이 크게 향상됩니다. 이 기능은 CSS의 transition 속성과 JavaScript의 스크롤 이벤트만으로 간단하게 만들 수 있습니다.

동작 원리

  • 내비게이션 바에 position: fixed;를 적용해 항상 화면 상단에 고정합니다.
  • window.onscroll 이벤트로 현재 스크롤 위치를 실시간으로 감지합니다.
  • 스크롤 위치가 20px보다 크면 내비게이션 바의 top 값을 -50px로 변경해 화면 위쪽으로 밀어냅니다.
  • 스크롤이 맨 위 근처로 돌아오면 top 값을 0px로 되돌려 메뉴를 다시 표시합니다.
  • CSS의 transition: 0.5s; 설정 덕분에 메뉴가 사라지고 나타날 때 부드러운 애니메이션 효과가 적용됩니다.

전체 예제 코드

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body{
   margin:0px;
   margin-top:60px;
   padding: 0px;
}
nav{
   position: fixed;
   top: 0px;
   width: 100%;
   background-color: rgb(39, 39, 39);
   overflow: auto;
   height: auto;
   transition: 0.5s;
}
.links {
   display: inline-block;
   text-align: center;
   padding: 14px;
   color: rgb(178, 137, 253);
   text-decoration: none;
   font-size: 17px;
}
.links:hover {
   background-color: rgb(100, 100, 100);
}
.selected{
   background-color: rgb(0, 18, 43);
}
.sample-content{
      height: 150vh;
}
</style>
</head>
<body>
<nav>
<a class="links selected" href="#">Home</a>
<a class="links" href="#"> Login</a>
<a class="links" href="#"> Register</a>
<a class="links" href="#"> Contact Us</a>
<a class="links" href="#">More Info</a>
</nav>
<div class="sample-content">
<h1>Here are some headers</h1>
<h2>Here are some headers</h2>
<h3>Here are some headers</h3>
<h4>Here are some headers</h4>
<h1>Here are some headers</h1>
<h2>Here are some headers</h2>
<h3>Here are some headers</h3>
<h4>Here are some headers</h4>
</div>
<script>
window.onscroll = scrollShowNav;
function scrollShowNav() {
   if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
      document.getElementsByTagName("nav")[0].style.top = "-50px";
   } else {
      document.getElementsByTagName("nav")[0].style.top = "0px";
   }
}
</script>
</body>
</html>

실행 결과

위 코드를 브라우저에서 실행하면 다음과 같은 초기 화면이 출력됩니다.

CSS와 JavaScript로 아래로 스크롤할 때 내비게이션 메뉴 자동 숨기기 방법

페이지를 아래로 스크롤하면 내비게이션 바가 위쪽으로 부드럽게 사라지는 것을 확인할 수 있습니다.

CSS와 JavaScript로 아래로 스크롤할 때 내비게이션 메뉴 자동 숨기기 방법