[Javascript,CSS] 로딩 화면 구현

이승현·2024년 6월 19일
1

Javascript

목록 보기
6/6

페이지의 모든 내용이 표시되기전까지 로딩 화면이 뜰 수 있도록 해보자. 페이지에 많은 기능이 추가되고, 특정 데이터를 모두 받아온 다음에 사용자와 상호작용을 하고 싶다면 활용도가 높은 방법이다. 먼저 알아야 할 것은 페이지가 불러온 다음의 시점에 대한 점이다.

$(document).ready(function(){});

$(function(){});

window.onload = function(){};

세 함수 모두 자바스크립트 단계에서 페이지 로드 후 이벤트에 해당한다. 하지만 시점마다 다 다른데...

세 코드를 실행해보면 순서가 다음과 같음을 알 수 있다.

$(document).ready(function(){}); 
$(function(){});

두 함수는 동일한 기능을 취한다. 웹 DOM을 모두 불러온 다음에 실행한다. 매개변수로 콜백을 사용하기 때문에 특정 함수를 넣을 수도 있다.

window.onload = function(){};
$(window).on('load', function() {});

모든 이미지, CSS등의 리소스가 완전히 불러와진 후 실행된다. 모든 리소스 이후에 실행되기 때문에 로딩 화면에 유용하다. 또한 페이지 호출 후 단 한번만 실행되기 때문에 초기값과 같은 설정에도 사용할 수 있다.


따라서 로딩 화면의 로직은 다음과 같다.
1. 웹 로딩화면을 덮은 상태로 시작한다.
2. 로딩이 완료된 시점에서 로딩 화면을 보이지 않게 처리한다.

구현은 다음과 같다.

<body>
  <!-- 로딩 화면 -->
  <div class="loading">
    <img class="loadingImg" src='/assets/img/loading.gif'>
  </div>
    <!-- 본문 내용 -->
  <div class="contents">  
  ...
  </div>
</body>

다음과 같이 로딩 화면을 앞에 구현한다.

html{
   overflow : 'hidden';
}
.loading {
   position: fixed;
   top: 0;
   left: 0;
   width: 100vw;
   height: 100vh;
   background-color: rgba(0, 0, 0,0.5);
   z-index: 10;
   transition: 0.5s ease;
 }

css에서 html은 "overflow : 'hidden';"으로 먼저 스크롤을 방지한다. 로딩 화면은 화면 가장 위에 있을수 있도록 z-index를 높은 값으로 지정하고 배경에 투명도를 약간 준다.

window.onload = function(){
   setTimeout(function () {
      $("html").css("overflow",'auto'); 
      $(".loading").css("display","none");
   }, 300);
};

javascript에서는 로딩 화면을 사라지게 만들고 html의 스크롤을 다시 복구하는과정을 넣음으로써 로딩화면이 구현된다. 물론 html에 다양한 방법이 있지만 가장 평범한 과정이라고 생각한다.

0개의 댓글