애니메이션은 애니메이션을 나타내는 CSS 스타일과 sequence(분기)를 나타내는 복수의 키프레임(@keyframes)들로 이루어진다.
transition 프로퍼티는 요소 프로퍼티 값이 다른 값으로 변화할 때 주로 사용하며, 요소의 로드와 함께 자동으로 동작되지 않는다. :hover와 같은 가상 클래스 선택자나 클래스 추가 시 와 같은 부수적 액션에 의해 동작된다.
즉, transition 프로퍼티는 단순히 요소의 프로퍼티 변화에 주안점이 있다면, animation 프로퍼티는 하나의 줄거리를 구성하여 줄거리 내에서 세부의 움직임을 시간 흐름 단위로 제어할 수 있고, 전체 줄거리의 재생과 반복, 정지까지 제어할 수 있다.
| 프로퍼티 | 설명 | 기본값 | 
|---|---|---|
| animation-name | @keyframes 애니메이션 이름을 지정한다. | |
| animation-duration | 한 싸이클의 애니메이션에 소요되는 시간을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다. | 0 | 
| animation-timing-function | 애니메이션 효과를 위한 타이밍 함수를 지정한다. | ease | 
| animation-delay | 요소가 로드된 시점과 애니메이션이 실제로 시작하는 사이에 대기 시간을 초 단위(s) 또는 밀리 초 단위(ms)로 지정한다 | 0 | 
| animation-iteration-count | 애니메이션 재생 횟수를 지정한다 | 1 | 
| animation-direction | 애니메이션이 종료된 이후 반복될 때 진행하는 방향을 지정한다. (한 회차를 도는데에 한번 이상 진행 시 어떤 순서로 진행할 것인지) | normal | 
| animation-fill-mode | 애니메이션 미실행 시(종료 또는 대기) 요소의 스타일을 지정한다 | none | 
| animation-play-state | 애니메이션 재생 상태(재생 또는 중지)를 지정한다 | running | 
| animation | 모든 애니메이션 프로퍼티를 한번에 지정한다 | 
CSS 의 animation과 transition의 주된 차이는 @keyframes 규칙에 있다. 이 규칙을 사용하면 애니메이션의 흐름(sequence) 중의 여러 시점(breakpoint)에서 CSS 프로퍼티 값을 부여해줄 수 있다.
div {
  position: absolute;
  width: 100px;
  height: 100px;
  animation-name: move, fadeOut, changeColor;
  animation-duration: 5s;
  animation-iteration-count: infinite;
}
@keyframes move {
  from { left: 0; }
  to   { left: 300px; }
}
@keyframes fadeOut {
  from { opacity: 1; }
  to   { opacity: 0; }
}
@keyframes changeColor {
  from { background-color: red; }
  to   { background-color: blue; }
}@keyframes 규칙은 시간의 흐름에 따라 애니메이션을 정의한다.
form, to 키워드 대신에 %를 사용할 수도 있다.
@keyframes move{
	from{
		left: 0;
	}
	to{
		left: 300px;		
	}
}
@keyframes move {
  0%   { left: 0; }
  50%  { left: 100px; }
  100% { left: 300px; }
}모든 애니메이션 프로퍼티를 한번에 지정할 수 있다.
animation: name | duration | timing-function | delay | iteration-count | direction | fill-mode | play-stateanimation-duration은 반드시 지정을 해야하고, 나머지 기본값은 다음과 같다.
animation: sample 0 ease 0 1 normal none running@keyframes 뒤에 애니메이션을 대표하는 이름을 지정
@keyframes move{}한 싸이클의 애니메이션에 소요되는 시간을 초 단위(s) / 밀리 초 단위(ms) 으로 지정
기본 값 : 0s
animation-duration은 반드시 지정해야 한다.
지정하지 않으면 0s가 설정되어 어떤 에니메이션도 실행되지 않는다.
animation-duration: 5s;애니메이션 효과를 위한 수치 함수를 지정한다.
transition-timing-function: cubic-bezier(0.250, 0.250, 0.750, 0.750); /* linear */요소가 로드된 시점과 애니메이션이 실제로 시작하는 사이에 대기하는 시간을 초 단위(s) / 밀리 초 단위(ms)로 지정
animation-delay: 2s;애니메이션 싸이클 횟수를 지정
기본 값 : 1
무한 반복으로 inifinite 속성 값을 사용할 수 있다.
animation-iteration-count: 3;
animation-iteration-count: infinite;애니메이션이 한 싸이클이 종료되고 반복될 때, 다음 사이클의 진행 방향을 지정한다.
| 프로퍼티 값 | 설명 | 
|---|---|
| normal | 기본 값으로 0% ~ 100% / from ~ to | 
| reverse | 100% ~ 0% / to ~ from | 
| alternate | 홀수번째는 normal / 짝수번째는 reverse | 
| alternate-reverse | 홀수번째는 reverse / 짝수번째는 normal | 
애니메이션 미실행 시(대기 / 종료) 요소의 스타일 지정
| 프로퍼티값 | 상태 | 설명 | 
|---|---|---|
| none | 대기 | 시작 프레임(from)에 설정한 스타일을 적용하지 않고 대기한다. | 
| 종료 | 애니메이션 실행 전 상태로 애니메이션 요소의 프로퍼티값을 되돌리고 종료한다. | |
| forwards | 대기 | 시작 프레임(from)에 설정한 스타일을 적용하지 않고 대기한다. | 
| 종료 | 종료 프레임(to)에 설정한 스타일을 적용하고 종료한다. | |
| backwards | 대기 | 시작 프레임(from)에 설정한 스타일을 적용하고 대기한다. | 
| 종료 | 애니메이션 실행 전 상태로 애니메이션 요소의 프로퍼티값을 되돌리고 종료한다. | |
| both | 대기 | 시작 프레임(from)에 설정한 스타일을 적용하고 대기한다. | 
| 종료 | 종료 프레임(to)에 설정한 스타일을 적용하고 종료한다. | 
애니메이션 재생 상태(재생 / 중지)를 지정한다.
기본 값 : running
| 속성 값 | 설명 | 
|---|---|
| running | 재생 상태 | 
| paused | 중지 상태 |