CSS 애니메이션 생성기

다음

@keyframes를 처음부터 쓰는 것은 지루합니다. 퍼센트를 고르고, 속성을 추측하고, 새로고침하고, 보고, 조정합니다. 이 생성기는 여섯 가지 완성된 애니메이션(페이드, 슬라이드 업, 바운스, 스핀, 펄스, 셰이크)을 제공하며 애니메이션 이름, 지속 시간, 이징, 반복 횟수, 방향을 설정할 수 있습니다. 결과는 실시간으로 재생되며, 만족스러우면 생성된 @keyframes 블록과 단축 animation 속성을 복사하세요.

CSS 애니메이션 만드는 방법

  1. 1

    프리셋 선택

    여섯 가지 기본 애니메이션 중 하나를 고르세요: 페이드, 슬라이드 업, 바운스, 스핀, 펄스 또는 셰이크.

  2. 2

    애니메이션 이름 지정

    키프레임에 유효한 CSS 식별자를 주세요. 예: `cardIn` 또는 `fadeIn`. 같은 이름이 `animation` 단축 속성에도 사용됩니다.

  3. 3

    시간과 반복 설정

    초 단위 지속 시간, 이징(ease, ease-in, ease-out, ease-in-out, linear, spring), 반복 횟수(1, 2, 3, infinite), 방향(normal, reverse, alternate, alternate-reverse).

  4. 4

    CSS 복사

    생성된 `@keyframes` 규칙과 `animation:` 단축 속성을 스타일시트에 바로 붙여넣으세요.

애니메이션 해부

@keyframes slide-in {
  0%   { transform: translateX(-100%); opacity: 0; }
  60%  { transform: translateX(10%);   opacity: 1; }
  100% { transform: translateX(0);     opacity: 1; }
}

.card {
  animation: slide-in 400ms cubic-bezier(0.22, 1, 0.36, 1) both;
}

단축 속성의 여덟 가지: animation-name duration timing-function delay iteration-count direction fill-mode play-state.

이징 선택

이 생성기가 제공하는 이징 함수는 여섯 가지입니다:

이징 cubic-bezier() 느낌
linear 해당 없음 일정한 속도
ease-in 0.42, 0, 1, 1 느린 시작, 빠른 끝
ease-out 0, 0, 0.58, 1 빠른 시작, 느린 끝
ease-in-out 0.42, 0, 0.58, 1 느림-빠름-느림
ease(기본) 0.25, 0.1, 0.25, 1 부드러운 기본
spring 0.68, -0.55, 0.27, 1.55 목표를 지나쳤다가 안착

올바른 속성을 애니메이션하세요

브라우저는 어떤 속성이든 애니메이션할 수 있지만, 레이아웃이나 페인트를 유발하지 않고 GPU에서 부드럽게 처리되는 것은 몇 개뿐입니다:

저렴(컴포지트 전용): transform, opacity, filter.

비쌈(레이아웃/페인트): width, height, top, left, margin, padding, background-color.

작은 요소에서는 widthtop을 60fps로 애니메이션하는 것이 가능하지만, 한 번에 여러 개를 애니메이션하면 모바일에서 뚝뚝 끊깁니다. 복잡한 모션에는 항상 top / left보다 transform: translate(...)를, 애니메이션 width/height보다 transform: scale(...)를 선호하세요.

will-change: 아껴 쓰세요

브라우저에 컴포지트 레이어를 미리 할당하도록 알리면 부드러움에 도움이 될 수 있습니다:

.card { will-change: transform; }

하지만 메모리를 소비합니다. 애니메이션이 트리거되기 직전에 적용하고, 끝나면 제거하세요. 많은 요소에 will-change: transform을 영구 설정하면 도움보다 해가 될 수 있습니다.

모션 감소

일부 사용자는 모션 민감성이 있어 OS 설정을 합니다:

@media (prefers-reduced-motion: reduce) {
  .card {
    animation: none;
  }
}

이 설정을 존중하세요. 즉각적인 상태 변경이나 아주 미묘한 페이드를 폴백으로 제공하세요.

자주 묻는 질문

단순하고 선언적이며 일회성 모션은 CSS. JavaScript 주도 타이밍, 동적 키프레임, 일시정지와 재생 제어는 Web Animations API(element.animate()). 둘 다 컴포지터에서 실행되며 어느 쪽이 본질적으로 더 빠르지는 않습니다.

거의 항상 transform 대신 레이아웃을 유발하는 속성(width, top, margin)을 애니메이션하기 때문입니다. translate()scale()로 바꾸면 보통 끊김이 사라집니다.

네, animation: a 1s, b 1s 1s, c 1s 2s;는 지연을 엇갈리게 두어 세 애니메이션을 순차 실행합니다. 이 생성기는 단일 애니메이션을 출력하므로 추가 항목은 단축 속성에 직접 덧붙이세요. 더 복잡한 안무는 Web Animations API나 GSAP 같은 라이브러리를 쓰세요.

애니메이션 시작 전(지연 동안)에 요소가 from 상태를 취하게 하고, 애니메이션 종료 후에 to 상태를 유지하게 합니다. both이 없으면 애니메이션이 끝날 때 요소가 애니메이션 이전 스타일로 되돌아갑니다. 이 생성기는 단축 속성을 최소한으로 유지하므로 필요하면 fill mode를 직접 추가하세요.

관련 도구