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

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