스크롤 기반 네비게이션 프로그레스 바 구현 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 웹 개발자 (중급 이상, CSS/JavaScript 기초 지식 보유자)
- 사용자 경험(UX) 개선을 위한 인터랙티브 요소 구현 필요자
핵심 요약
scrollTop
,scrollHeight
,clientHeight
를 이용해 스크롤 진행률 계산.progress-bar
의width
를scrollPercentage
값으로 실시간 업데이트transition
속성을 통해 부드러운 애니메이션 효과 적용
섹션별 세부 요약
1. CSS 스타일 적용
.progress-bar
- position: fixed
로 상단 고정
- width: 0%
초기값 설정
- transition: width 0.25s ease-out
애니메이션 적용
.content
- padding: 20px
으로 콘텐츠 여백 설정
2. JavaScript 로직 구현
window.addEventListener("scroll")
이벤트 핸들러
- scrollTop
: 현재 스크롤 위치
- scrollHeight
: 전체 스크롤 가능한 높이
- clientHeight
: 화면 높이
- scrollPercentage
: (scrollTop / scrollHeight) * 100
계산
3. 동작 원리
scrollPercentage
값을.progress-bar
의width
에 할당- 사용자가 스크롤할 때마다 실시간으로 진행률 표시
- 시각적 피드백을 통해 사용자에게 콘텐츠 진행 상황 알림
결론
transition
속성과scrollPercentage
계산식을 결합해 부드러운 프로그레스 바 효과 구현- 장거리 스크롤 페이지에서 사용자 경험 향상에 유용한 기법
position: fixed
와z-index: 9999
설정으로 UI 위에 항상 표시 가능