자바스크립트로 메뉴바 요소를 클릭하여 스크롤 이동하기
자바스크립트로 메뉴바의 요소를 클릭하면 브라우저의 스크롤을 통해 특정 위치로 이동하는 기능을 구현하자.
1. 선행 학습
기능을 구현하기 전에 먼저 알아두어야 할 내용을 학습하자.
window.scroll()
브라우저의 스크롤을 특정 위치로 이동시키는 메서드이다.
사용 문법은 다음과 같다.
1. window.scroll(x좌표, y좌표)
2. window.scroll(options 객체)
options 객체란?
options는 아래의 매개변수를 포함하는 딕셔너리이다.
- top: 스크롤할 Y축의 픽셀 수를 지정함
- left: 스크롤할 X축의 픽셀 수를 지정함
- behavior: 스크롤 동작을 설정함
- auto: 연출 없이 바로 이동함 (기본값)
- smooth: 부드럽게 스크롤함
위의 2가지 문법 중에서 2번 문법으로 실습해 보자.
HTML요소.offsetTop
offsetTop
속성은 해당 요소의 윗면이 브라우저 화면 최상단에서 떨어져 있는 거리를 반환해 주는 속성이다.
2. 기능 구현
위의 내용을 바탕으로 스크롤 기능을 구현하면 다음과 같다.
코드 예제
See the Pen 자바스크립트로 스크롤 구현 by blog dunku (@blog-dunku) on CodePen.
JavsScript 코드 설명
메뉴바 네비 요소의 onclick
이벤트에 각 콘텐츠의 윗면 좌표로 스크롤하는 메서드를 이벤트로 추가한다.
spans
변수에 메뉴바의 네비 요소들을 저장한다.contents
변수에 실제 콘텐츠 요소들을 저장한다.topOne, topTwo, topThree
변수에 각 콘텐츠의 윗면 좌표를 저장한다.- 각 네비 요소에
onclick
이벤트로 스크롤 함수를 작성하여 저장한다. - 스크롤 함수는
window.scroll
메서드를 사용한다. window.scroll
메서드의 options 객체로top
키에 이동할 위치인topOne, topTwo, topThree
변수를 입력하고,behavior
키에smooth
를 입력하여 스크롤이 부드럽게 이루어지도록 한다.
TIP
- 상하 스크롤이 아닌 좌우 스크롤은
top
키 대신left
키를 사용한다. behavior
키에auto
를 입력하면, 즉각 해당 위치로 이동한다.