CSS로 개발된 애니메이션은 작고 독립적인 사용자 인터페이스 요소가 있는 애플리케이션에 적합하다.
도구 설명을 표시하거나 측면에서 탐색 메뉴를 가져오는 데 사용할 수 있다.
Web-Kit
기반 브라우저에서만 작동하지만 요즘 대부분의 데스크톱 및 모바일 브라우저는 Web-kit
기반이라 괜춘하다.
이는 디자인에 움직임을 가져오는 가장 쉬운 방법이며 원하는 동작과 발생 횟수를 제어할 수 있다.
transition을 사용하면 상태가 변경될 때마다 요소의 모양과 동작을 변경할 수 있다.
변경은 지정된 기간 동안 발생하며 마우스 오버, 포커스, 활성 또는 대상 지정과 같은 이벤트에 의해 트리거된다.
transition은 상태가 변경되고 각 상태에 대해 서로 다른 스타일을 식별해야 한다.
transition은 한 상태에서 다른 상태로 시각적으로 변경하는 데 큰 역할을 하므로 단일 상태 변경
이 필요할 때 적합하다.
바로 앞에서 언급한 transition과는 다르게 복수 상태, 더 많은 제어
가 필요할 땐 @keyframe을 사용해야한다.
@keyframe은 CSS animation의 기초이며 부드럽고 유지보수가 편한 animation을 만들 수 있도록 해주며 굉장히 많은 양의 코드(reams of script)를 필요로 하지도 않는다.
또한 각 단계별로 animation이 작동하는 방식을 정의할 수 있다.
@keyframes spin {
from {
transform: rotate(0);
}
to {
transform: rotate(-360deg);
}
}
.box:hover img:nth-child(2){
animation: spin 40s infinite linear;
}
JavaScript로 애니메이션을 만드는 것은 transition이나 animation을 코딩하는 것보다 복잡하지만 그 복잡성에는 큰 힘이 있다.
JavaScript animation은 코드의 일부로 인라인(in-line)으로 작성된다.
bouncing, stop, pause, rewind, or slow-down 같은 효과를 얻으려면 JS animation을 사용하는 것이 좋다.
jQuery
Velocity
WebGL
GreenSock
그리고 여기서는 GreenSock을 추천한다.
크로스 브라우징면에서는 JS 애니메이션을 사용하는 것이 낫다. 하지만, CSS 애니메이션은 모든 동작을 CSS에서 관리하고 필요하다면 JS는 이벤트 감지를 위해서만 사용한다.
실행 로직을 브라우저 자체에서 실행하기 때문에 메모리 소비를 최적화 해준다.
JavaScript에서는 css, 동작을 모두 관리해줘야하는 반면, CSS애니메이션은 CSS안에서 다 관리하기 때문에 관리에 용이하다.