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

CSS만으로 프리로더(로딩 스피너) 만드는 방법

CSS만을 활용하면 자바스크립트 없이도 부드럽게 회전하는 로딩 프리로더(스피너)를 손쉽게 만들 수 있습니다. 핵심은 border, border-radius, 그리고 @keyframes 애니메이션의 조합입니다.

예제 코드

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
   body{
      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
   }
   .loader {
      border: 16px double #ffee00;
      border-radius: 50%;
      border-top: 16px solid #7434db;
      width: 140px;
      height: 140px;
      -webkit-animation: loader 2s linear infinite; /* Safari */
      animation: loader 2s linear infinite;
   }
   @-webkit-keyframes loader {
      0% {
         -webkit-transform: rotate(0deg);
      }
      100% {
         -webkit-transform: rotate(360deg);
      }
   }
   @keyframes loader {
      0% {
         transform: rotate(0deg);
      }
      100% {
         transform: rotate(360deg);
      }
   }
</style>
</head>
<body>
<h1>Creating a pre Loader example</h1>
<div class="loader"></div>
</body>
</html>

실행 결과

위 코드를 실행하면 다음과 같이 노란색 테두리 위에서 보라색 부분이 끊임없이 회전하는 원형 로딩 스피너가 화면에 나타납니다.

CSS만으로 프리로더(로딩 스피너) 만드는 방법


코드 동작 원리

  • .loader 클래스: 16px 두께의 이중(double) 노란색(#ffee00) 테두리로 원을 그리고, border-radius: 50%를 적용해 완전한 원 형태를 만듭니다. 상단(border-top) 테두리만 보라색(#7434db)으로 지정하여 회전하는 시각적 효과를 연출합니다.
  • animation 속성: loader 애니메이션이 2초 동안 일정한 속도(linear)로 무한 반복(infinite)되도록 설정했습니다. -webkit- 접두사는 Safari 등 구형 웹킷 기반 브라우저와의 호환성을 위해 추가됩니다.
  • @keyframes loader: 요소를 0도에서 360도까지 회전시켜 콘텐츠가 로딩 중이라는 느낌을 주는 회전 효과를 구현합니다.

이처럼 몇 줄의 CSS만으로 페이지 로딩 시 사용자 경험을 높일 수 있는 프리로더를 간단히 완성할 수 있습니다.