스크롤할 때 메뉴를 축소하는 방법

CSS와 JavaScript를 사용하여 스크롤할 때 네비게이션 바 크기를 조정하는 방법을 배웁니다.

직접 시도해 보세요

스크롤할 때 네비게이션 바를 줄이는 방법

첫 번째 단계 - HTML 추가:

네비게이션 바 생성:

<div id="navbar">
  <a href="#default" id="logo">CompanyLogo</a>
  <div id="navbar-right">
    <a class="active" href="#home">Home</a>
    <a href="#contact">Contact</a>
    <a href="#about">About</a>
  </div>
</div>

두 번째 단계 - CSS 추가:

네비게이션 바 스타일 설정:

/* 고정/粘性 네비게이션 바 생성 */
#navbar {
  overflow: hidden;
  background-color: #f1f1f1;
  padding: 90px 10px; /* 큰 내간격, 스크롤할 때 줄어들어야 합니다(JS 사용)*/
  transition: 0.4s; /* 내간격이 줄어들 때 전환 효과 추가 */
  position: fixed; /* 고정/粘性 네비게이션 바 */
  width: 100%;
  top: 0; /* 위쪽 */
  z-index: 99;
}
/* 네비게이션 링크의 스타일을 설정 */
#navbar a {
  float: left;
  color: black;
  text-align: center;
  padding: 12px;
  text-decoration: none;
  font-size: 18px;
  line-height: 25px;
  border-radius: 4px;
}
/* 로고의 스타일을 설정 */
#navbar #logo {
  font-size: 35px;
  font-weight: bold;
  transition: 0.4s;
}
/* 마우스 오버 시 링크 스타일 */
#navbar a:hover {
  background-color: #ddd;
  color: black;
}
/* 활성/현재 링크 스타일 설정 */
#navbar a.active {
  background-color: dodgerblue;
  color: white;
}
/* 우측에 몇 가지 링크를 표시합니다 */
#navbar-right {
  float: right;
}
/* 응답성 추가 - 네비게이션 바가 580 픽셀 너비보다 작을 때, 수직으로 대신 수평으로 표시됩니다 */
@media screen and (max-width: 580px) {
  #navbar {
    padding: 20px 10px !important; /* !important 사용하여 JavaScript가 작은 스크린에서 간격을 덮지 않도록 합니다 */
  }
  #navbar a {
    float: none;
    display: block;
    text-align: left;
  }
  #navbar-right {
    float: none;
  }
}

세 번째 단계 - JavaScript 추가:

// 사용자가 문서 상단에서 하단으로 80 픽셀 스크롤할 때, 네비게이션 바의 내간격과 로고의 폰트 크기를 조정합니다
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
  if (document.body.scrollTop > 80 || document.documentElement.scrollTop > 80) {
    document.getElementById("navbar").style.padding = "30px 10px";
    document.getElementById("logo").style.fontSize = "25px";
  } else {
    document.getElementById("navbar").style.padding = "80px 10px";
    document.getElementById("logo").style.fontSize = "35px";
  }
}

직접 시도해 보세요