궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
FRONT-END/JAVASCRIPT

[JS] 페이지 로딩시 스크롤 막는 방법

서근
QUOTE THE DAY

-
Written by SeogunSEOGUN

반응형

페이지 로딩 시 스크롤 막는 방법

페이지가 로딩될때 스크롤을 막아야 하는 경우가 있는데,
오늘은 로딩시 스크롤을 막는 방법에 대해 알아보겠습니다.

body overflow hidden

우선 Htmlbody 부분의 스크롤을 막아주는 스타일을 입혀야 합니다. 

 

CSS에 다음과 같이 코드를 추가해줍니다.

body.no-scroll {
    overflow: hidden !important
}

코드 네임의 .no-scroll은 사용자가 원하는 네임으로 변경해도 됩니다.

body class 추가

body.no-scroll이라는 class를 추가해주겠습니다.

<html lang="ko">
  <head></head>
  
  <body class=".no-scroll">
   
  </body>
   
</html>

Javascript 추가

body에 클래스를 추가해줬다면 이제 모든 페이지에서 스크롤이 작동되지 않습니다. 왜냐하면 CSSbodyoverflowhidden으로 해줬기 때문이죠.

 

그렇기 때문에 페이지가 로드가 끝나면 body.no-scroll 클래스를 제거해줘야 합니다.

 

<body>가 시작하는 부분 최 상단에 아래 코드를 추가해주겠습니다.

<script>
  $(window).on("load", function() {
    document.body.classList.remove('no-scroll');
  });
</script>
<html lang="ko">
  <head>
         <!--이곳에 추가-->
  </head>
  
  <body class=".no-scroll">

  </body>
   
</html>

지연 효과

만약, 로딩 이미지와 함께 스크롤이 활성화 되야 한다면 setTimeout( ) 메소드를 사용하면 됩니다.

$(window).on('load', function() {
    setTimeout(function() {
        document.body.classList.remove('no-scroll');
    }, 300);
});

새로고침시 스크롤 맨위로

새로고침시 스크롤을 맨 위로 보내어 Refresh 하는 방법도 있습니다. 이 스크립트를 사용하면 웹 페이지가 스크롤 되기 전에 스크롤을 최 상단으로 보내고 Refresh를 시작하게 됩니다.

window.onbeforeunload = function() {
    window.scrollTo(0, 0);
};

결과 확인

위 코드를 모두 적용했다면, 페이지를 로딩 시켜보고 로딩이 완료되는 순간 스크롤이 되는 것을 확인해주기만 하면 됩니다.

 

참고로 이 코드는 로딩 이미지 등과 함께 사용하는 것이 사용자 입장에서 좋습니다.


오늘은 이렇게 페이지가 로딩될때 스크롤을 막는 방법에 대해 알아보았습니다.

 

읽어주셔서 감사합니다🤟


잘못된 내용이 있으면 언제든 피드백 부탁드립니다.


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.