CSS 로딩 애니메이션 생성기
스피너는 사용자에게 무언가 진행 중임을 알려 줍니다. 이 생성기는 원형 CSS 스피너 하나를 만듭니다. 지름, 테두리 두께, 포인트 색상, 회전 속도를 설정하고 미리 보기를 확인한 다음 CSS를 복사하세요. 전부 순수 CSS이며, SVG도 자바스크립트도 외부 라이브러리도 쓰지 않습니다.
사용 방법
-
1
크기 설정
스피너의 지름(픽셀)입니다. 40~80px이 대부분의 버튼과 콘텐츠 영역에 어울립니다.
-
2
테두리 두께 설정
링은 원 위에 그린 테두리입니다. 두꺼울수록 호가 또렷해집니다. 지름 60px 기준 4~8px이 잘 어울립니다.
-
3
색상 선택
회전하는 호의 포인트 색상입니다. 호가 두드러지도록 링의 나머지는 밝은 회색을 유지합니다.
-
4
속도 설정 후 CSS 복사
한 바퀴 도는 데 걸리는 초 단위 시간입니다. 보통 1초가 가장 무난하며, 500ms 미만이면 조급해 보이고 2초를 넘기면 굼떠 보입니다.
생성된 CSS의 동작 방식
.loader {
width: 60px;
height: 60px;
border: 6px solid #eee;
border-top-color: #10b981;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
스피너는 두꺼운 테두리로 그린 원입니다. border-top-color가 링의 위쪽만 포인트 색상으로 칠하므로 링이 호처럼 보이고, @keyframes spin이 호를 중심 기준으로 회전시킵니다. transform: rotate()로 회전하면 브라우저가 요소를 컴포지터에서 움직이기만 하므로 프레임마다 다시 그리는 방식보다 가볍습니다.
페이지에 표시하려면 요소 하나를 추가하고 CSS를 불러오세요:
<div class="loader" role="status" aria-label="로딩 중"></div>
접근성 갖추기
role="status"를 붙이면 스크린 리더가 스피너를 읽어 줍니다.aria-label에는 상태를 나타내는 텍스트를 넣습니다. 예: “로딩 중”.- 타임아웃 대비책 없이 스피너 뒤로 콘텐츠를 몇 초 이상 가리지 마세요.
prefers-reduced-motion을 존중하세요. 모션 축소를 선택한 사용자에게는 회전 대신 단순한 페이드나 정적인 “로딩 중…” 텍스트로 바꾸세요:
@media (prefers-reduced-motion: reduce) {
.loader { animation: none; background: currentColor; opacity: .4; }
}
스피너를 쓸 때와 낙관적 UI를 쓸 때
- 응답 100ms 미만: 스피너가 필요 없습니다. 사람 눈은 그 지연을 거의 못 느낍니다.
- 100ms ~ 1초: 은은한 스피너(작은 원, 버튼 텍스트 “로딩 중…”)로 중복 클릭을 막습니다.
- 1초 ~ 10초: 눈에 띄는 스피너를 쓰고, 측정할 수 있다면 진행률을 함께 보여 주는 것이 이상적입니다.
- 10초 초과: 스피너로 풀 문제가 아닙니다. 무엇이 느린지 찾아 고치세요.
폼 제출이나 버튼 클릭에는 대개 전체 화면 오버레이보다 버튼 안에 들어가는 스피너가 낫습니다.
자주 묻는 질문
단순한 단일 요소 스피너(테두리 네 변을 회전시키는 기법)에는 CSS가 좋습니다. 끝이 가늘어지는 잔상, 여러 개의 stroke-dasharray 애니메이션, 붓질처럼 채워진 구간이 필요하다면 SVG를 쓰세요. CSS는 더 가볍고 단순하며, SVG는 더 유연합니다.
큰 요소를 회전시키거나, 합성되지 않는 속성을 애니메이션하고 있을 가능성이 큽니다. 스피너 크기를 작게 유지하고, top이나 margin 대신 transform: rotate()를 사용하며, 다른 무거운 애니메이션이 도는 동안에는 발동시키지 마세요.
거의 예외 없이 시계 방향입니다. 반시계 방향은 어딘가 미묘하게 어색하게 느껴지는데, 현실의 회전 단서(시계, 풍차)가 대부분 시계 방향이기 때문입니다. 특별한 이유가 없다면 관례를 따르세요.
JavaScript에서 setTimeout(..., 300)으로 로더 클래스를 추가하고, 작업이 먼저 끝나면 clearTimeout으로 취소하세요. 이렇게 하면 빠른 응답에서의 깜빡임을 막으면서도 실제 지연은 숨기지 않습니다.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
랜덤 영어 글자 생성기
A-Z 영어 글자를 무작위로 생성합니다. 개수와 대문자, 소문자, 혼합 대소문자를 선택해 게임, 과제, 수업 활동에 활용하세요.
랜덤 색상 팔레트 생성기
2~15개의 색상으로 랜덤 팔레트를 만들고, 비비드, 파스텔, muted, dark 스타일을 선택한 뒤 HEX 코드나 CSS 변수를 복사하세요.