Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 일정한 시간 간격마다 자동 스크롤 설정하는 방법

JavaScript에서 일정한 시간 간격을 두고 요소의 스크롤 위치를 자동으로 조정하려면 scrollTopscrollHeight 속성의 개념을 활용하면 됩니다.

핵심 개념

  • scrollTop: 요소가 현재 수직 방향으로 스크롤된 픽셀 값을 나타냅니다. 이 값을 변경하면 스크롤 위치가 즉시 이동합니다.
  • scrollHeight: 스크롤되지 않은 영역까지 포함한 요소 전체 콘텐츠의 높이를 의미합니다.

따라서 scrollTopscrollHeight 값을 대입하면 해당 요소가 항상 맨 아래로 스크롤됩니다. 여기에 setInterval()을 조합하면 지정한 시간 간격마다 새로운 콘텐츠를 추가하고 자동으로 맨 아래로 스크롤할 수 있습니다.

예제 코드

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>자동 스크롤 예제</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<style>
    #scrollDemo {
        height: 300px;
        overflow-y: scroll;
    }
    #scrollDataFeatures {
        height: 500px;
        background-color: skyblue;
    }
</style>
</head>
<body>
<div id="scrollDemo">
<div id="scrollDataFeatures"></div>
<h3>아래 메시지를 확인하고 위로 스크롤하세요</h3>
</div>
<script>
    var scrollData = document.getElementById("scrollDemo");
    // 페이지 로드 시 즉시 맨 아래로 스크롤
    scrollData.scrollTop = scrollData.scrollHeight;

    // 30초(30 * 1000ms)마다 실행
    setInterval(() =>{
        var heading3Data = document.createElement("h3");
        heading3Data.innerHTML = "아래로 스크롤하세요... 다시 위로 올려주세요";
        scrollData.appendChild(heading3Data);
        // 새 콘텐츠 추가 후 다시 맨 아래로 스크롤
        scrollData.scrollTop = scrollData.scrollHeight
    }, 30*1000)
</script>
</body>
</html>

실행 방법

위 코드를 원하는 파일명(예: index.html)으로 저장한 뒤, VSCode 편집기에서 해당 파일을 마우스 오른쪽 버튼으로 클릭하고 Open with Live Server(Live Server로 열기) 옵션을 선택하면 브라우저에서 프로그램을 바로 확인할 수 있습니다.

실행 결과

프로그램을 실행하면 처음에는 다음과 같은 화면이 출력됩니다.

JavaScript로 일정한 시간 간격마다 자동 스크롤 설정하는 방법

그 후 매 30초마다 다음과 같은 메시지가 자동으로 추가되며, 화면 역시 맨 아래로 스크롤됩니다.

아래로 스크롤하세요... 다시 위로 올려주세요.

결과적으로 다음과 같은 화면을 볼 수 있습니다.

JavaScript로 일정한 시간 간격마다 자동 스크롤 설정하는 방법

정리

이 예제에서 알 수 있듯이, scrollTop = scrollHeight 코드 한 줄만으로도 요소를 항상 최하단으로 이동시킬 수 있습니다. 채팅 애플리케이션이나 실시간 로그 뷰어처럼 새 데이터가 계속 추가되는 환경에서 유용하게 활용할 수 있습니다. 또한 setInterval()의 두 번째 인자인 밀리초(ms) 값을 조절하면 업데이트 주기를 자유롭게 변경할 수 있다는 점도 기억해 두면 좋습니다.