본문 바로가기
animation

CSS 원형 로딩 스피너 (css circle loading spinners)

by uensung 2022. 12. 22.

안녕하세요~ 오늘은 로딩화면에서 빙글 빙글 돌아가는 로딩 스피너를 만들어 보려 합니다!

css를 활용하여 style을 주고, 애니메이션을 사용하여 가장 기본적인 스피너를 만들어 볼 계획입니다.

결과 화면을 먼저 확인해 볼까요?

 

 

 

 

위와 같이 원형 스피너 일부가 색상을 가지고 돌아가는 모양의 스피너 입니다. 그럼 요소부터

말들어 보겠습니다.

 

 

 

1. 사각형 요소 만들고 윗부분 색상 주기

 

<style>
  .container {
    width: 200px;
    height: 200px;
    margin: 20px auto;
    border: 1px solid white;
    background-color: #19CE60;
  }
  #spinner {
    margin: calc(50% - 25px) auto;
    width: 50px;
    height: 50px;
    box-sizing: border-box;
  
    border: 3px solid rgba(255, 255, 255, 0.3);  
    border-top-color: #white;
  }
</style>

<body>
  <div class="container">
    <div id="spinner"></div>
  </div>
</body>

 

위와 같이 container 영역 내부에 spinner 영역을 사각형으로 만들어 주고 크기와 색상을 지정해 줍니다.

여기서 사각형 테두리의 경우 전체 border 값은 rgba(255, 255, 255, 0.3) 값을 사용해 0.3만큼 투명하게 만들어주고 border-top-color 값만 white로 주어, 윗부분의 테두리 색상만 투명하지 않은 흰색으로 구분해 주었습니다. 아래와 같은 결과 화면을 확인할 수 있습니다.

 

 

 

 

 

 

2. spinner 영역 둥글게 변경

#spinner {
  margin: calc(50% - 25px) auto;
  width: 50px;
  height: 50px;
  box-sizing: border-box;
  border: 3px solid rgba(255, 255, 255, 0.3);  
  border-top-color: #white;
  
  border-radius: 100%
}

 

사각형의 spinner 영역에 border-radius 값을 100%로 주어 영역을 동그랗게 바꿔 줍니다.

윗부분의 테두리 색상은 투명값이 없는 흰색이기 때문에 아래와 같이 원형의 1/4 은 테두리가 표시된 스피너 영역이 됩니다.

 

 

 

 

 

 

3. 회전 애니메이션 효과 주기

#spinner {
  margin: calc(50% - 25px) auto;
  width: 50px;
  height: 50px;
  border: 3px solid rgba(255, 255, 255, 0.3);
  box-sizing: border-box;
  border-top-color: white;
  border-radius: 100%;

  animation: spin 1s ease-in-out infinite;
}

@keyframes spin {
  100%
  {
    transform: rotate(360deg);
  }
}

 

spin 이름의 애니메이션을 1초 동안 무한으로 반복하는 효과를 주었습니다.

@keyframes의 경우 100%일 경우 transform: rotate(360deg) 효과를 주어 360도 회전시켜 주었습니다.

결과 화면을 확인해 볼까요?

 

 

 

 

 

4. 아래 회전 영역 추가

#spinner {
  margin: calc(50% - 25px) auto;
  width: 50px;
  height: 50px;
  border: 3px solid rgba(255, 255, 255, 0.3);
  box-sizing: border-box;

  border-top-color: white;
  border-bottom-color: white;

  border-radius: 100%;
  animation: spin 1s ease-in-out infinite;
}

@keyframes spin {
  100%
  {
    transform: rotate(180deg);
  }
}

 

위와 같이 아래 테두리에 border-bottom-color: white 속성으로 흰색 영역을 추가하고, @keyframes에 transform: rotate() 내부 값을 180deg로 변경하여 아래 결과 화면처럼 활용할 수도 있습니다.

 

 

 

 

 

오늘은 로딩화면에서 빙글빙글 돌아가는 원형 스피너를 애니메이션 효과를 주어 만들어 보았습니다.

그럼 다음에 또다른 내용으로 찾아오겠습니다. 오늘은 이만~

 

댓글