본격 팀 프로젝트가 시작됐다!
내가 해보고싶다한 기능을 구현하기위해 테스트를 해보다가.. 예상치못하게 참고한 코드들이 하나도 이해가 안돼서 ㅎㅎㅎ ㅠㅠ
한참을 고민했다..
일단 기반이되는 scrollTo()를 먼저 정리해보자!
window.scrollTo()
문서 내 특정 좌표로 스크롤을 이동한다!
Syntax
scrollTo(x, y);
scrollTo(({top: y, left: x, behaviour: option});
x, y값은 이동할 거리(단위: 픽셀), behaviour는 움직임에대한 옵션을 설정할 수 있다.
behaviour 옵션
- smooth: 부드럽게 이동
- instant: 한번에 이동
- auto: smooth를 지원하지 않는 경우, 브라우저에서 지원하는 방식으로 스크롤 (대부분 목표 위치로 즉시 이동)
behaviour 옵션을 설정하지 않고 위치만 지정하는 경우 즉시 이동!
scrollBy()
현재 위치에서부터 n픽셀 떨어진 곳으로 이동하고 싶을 때는 이 메서드를 사용한다!
예제 - 부드럽게 이동
<button class="moveBtn">Click!</button>
<div class="passArea">
내
려
가
자
</div>
<p class="dest">도착!</p>
const destination = document.querySelector(".dest").offsetTop;
const moveBtn = document.querySelector(".moveBtn");
moveBtn.addEventListener("click", () => {
window.scrollTo({ top: destination, behavior: "smooth" });
});
누르면 자동 스크롤될 버튼, 지나쳐갈 긴 div, 도착지점을 만들어줬다.
도착지점의 위치를 받아 부드럽게 이동시켜줬다.

문제는.. 속도 조절을 할 수 없다!
내가 생각한 속도보다 너무 빠르다 이때부터 속도 조절을 위해 한참을 헤매게된다..
예제 - 즉시 이동
moveBtn.addEventListener("click", () => {
window.scrollTo(0, destination);
});
위 HTML 구조는 같고, behaviour 옵션 없이 바로 위치를 지정해줬다.

참고자료
MDN, Window: scrollTo() Method
Window: scrollTo() method - Web APIs | MDN
Window.scrollTo() scrolls to a particular set of coordinates in the document.
developer.mozilla.org
'JavaScript' 카테고리의 다른 글
CORS 오류와 자바스크립트 모듈화 (0) | 2024.07.18 |
---|---|
[JavaScript / jQuery] 특정 요소의 상/하단 위치 가져오기 (0) | 2024.07.16 |
[Javascript] 동적 생성한 요소에 이벤트 추가하기 (addEventListener) (1) | 2024.07.03 |
Javascript에서 false로 간주되는 값들 (falsy) (0) | 2024.07.01 |
DOM이란 무엇일까? (0) | 2024.06.29 |