animation 효과도 마찬가지로 HTML 요소들을 부드럽게 변화시키는 기능을 한다. animation은 transition을 사용할 때보다 더 유연한 기능을 보여준다. transition 효과는 요소 속성값이 다른 값으로 변화할 때 주로 사용하며 또한 transition을 사용할 때는 :hover와 같은 부가적인 행동이 필요하다는 특징을 가지고 있다.
그와 반대로 animation은 속성의 변화 뿐만 아니라 세부적인 움직임을 시간 단위로 제어할 수 있고 재생과 제어, 정지, 반복까지 실행할 수 있다.
animation: name duration timing-function delay iteration-count direction
@keyframes animation-name {
/*애니메이션 시작 시점*/
from {시작할 때 발생하는 상태}
/*애니메이션 종료 시점*/
to {끝날 때 발생할 상태}
}
시간의 흐름에 따라 애니메이션을 어떻게 진행할지 정의할 수 있다.
from, to 이외에 더 세부적으로 애니메이션을 설정하고 싶다면 %를 사용할 수도 있다.
@keyframes animation-name {
/*시작 시점*/
0%{}
/*중간 시점*/
50%{}
/*종료 시점*/
100%{}
}
animation-name
, @keyframes
와 함께 animation-duration
은 반드시 지정하도록 한다. 만약 지정하지 않는다면 이 속성의 기본값은 0이기 때문에 애니메이션이 동작하지 않는다. 단위는 초(s), 밀리 초(ms) 단위로 설정한다.
transition-timing-function과 동일하다. 자세한 설명은 여기를 참조하자.
/*반복 횟수를 지정한다.*/
animation-iteration-count: 5;
animation-iteration-count: infinite; /*무한반복*/