본문 바로가기
01_PROJECT/OBJECT _2023

[ JavaScript ] scrollIntoView()로 스크롤을 원하는 위치로 이동하기

by zestlumen 2023. 8. 3.

 

개인적으로 요즘은 무한 스크롤 방식을 많이 사용해서 스크롤을 많이 내렸을 때

빠르게 상단으로 이동하고 싶은데 막막할 때가 많다.

그럴 때 위와 같이 스크롤을 상단으로 이동하는 버튼이 있으면 참 편리하다는 생각을 많이 했다.

그래서 해당 버튼을 구현해 보았고,이렇게 스크롤을 원하는 위치로 쉽고 간단하게

이동하는 방법으로는 scrollIntoView() 메소드를 활용할 수 있다.

 

scrollIntoView 메서드 사용법

원하는 DOM요소에 이 메소드를 호출하면 해당 요소가 뷰포트 내로 보이도록 한다.

 

const targetElement = document.getElementById('targetElement');
targetElement.scrollIntoView();

 

위의 코드는 targetElement라는 id를 가진 요소가 뷰포트 내에서 보이도록

자동으로 스크롤을 할 수 있게 된다.

 

부드러운 스크롤 효과 주기

scrollIntoView()메서드는 다양한 옵션을 받을 수 있고, 이를 통해 세부적인 제어가 가능하다.

behavior 옵션을 추가하여 스크롤 동작 효과를 줄 수 있는데

auto : 기본값으로 스크롤이 즉시 이루어진다.

smooth : 스크롤이 부드럽게 이루어진다.

 

const targetElement = document.getElementById('target-element');
targetElement.scrollIntoView({ behavior: 'smooth' });

 

위와 같이 작성시에 부드럽게 스크롤이 작동하게 된다.

 

 

스크롤 정렬 방식 지정하기

또한 scrollIntoView()메서드에는 block 이나 inline옵션도

추가하여 스크롤된 요소의 정렬 방식을 조절할 수 있다.

block은 수직으로 스크롤링 될 때,

start, center, end, nearest (요소의 젤 위, 중간, 끝, 가까운 곳에 정렬)

inline은 수평으로 스크롤링 될 때,

start, center, end, nearest (요소의 시작, 중간, 끝, 가까운 곳 정렬)

 

 

 

const targetElement = document.getElementById('target-element');
targetElement.scrollIntoView({ block: 'center' });

 

해당 코드는 targetElement가 뷰포트 내에서 가운데에 정렬되어 스크롤이 된다.

 

targetElement.scrollIntoView(({behavior:'smooth', block:'start'});

 

이렇게 behavior과 block옵션을 같이 추가해서 사용할 수도 있다.