스크롤할 때 메뉴를 축소하는 방법
- 이전 페이지 스크롤할 때 네비게이션 바 숨기기
- 다음 페이지 스티키 네비게이션 바
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"; } }
- 이전 페이지 스크롤할 때 네비게이션 바 숨기기
- 다음 페이지 스티키 네비게이션 바