Development/HTML & CSS

[CSS] Animation 완벽 정리

이쥬딩 2021. 2. 9. 16:31
728x90

 

요소가 연속적으로 회전한다던가, 왼쪽 오른쪽으로 움직이는 요소를 만들고 싶다면 어떻게 해야할까?

바로 CSS property인 Animation을 사용하면 된다. 

animation property는 특정 요소에 스타일(CSS)을 변환하는 애니메이션을 적용한다.

Animation CSS property

# animation-name 

요소에 적용할 @keyframes 이름을 정의한다.

# animation-duration

애니메이션이 한 사이클을 완료하는데 걸리는 시간을 정의한다.

# animation-timing-function

transition 효과의 시간당 속도를 설정하여, 진행되는 방식을 정의한다.

 

ease

기본값으로, 중간으로 갈수록 속도가 증가하고 끝에서 다시 느려진다.

 

linear

동일한 속도로 진행된다.

 

ease-in

천천히 시작되며 끝날때까지 속도가 점차 증가된다.

 

ease-out

빠르게 시작되며 끝날때까지 속도가 점차 감소된다.

 

ease-in-out

천천히 시작되고 빨라진 다음 다시 느려진다. 

 

cubic-bezier(n,n,n,n)

한국말로 직역하면 3차원 베지어 곡선이라는 말이다.

솔직히 무슨소린지 모르겠지만, 대충 이해하자면 4개의 점으로 정의된 곡선을 이용하여 속도를 조절하는 거라고 이해하면 될 듯 하다.

 

위에 속성 값들도 3차원 베지어 곡선으로 이루어져있으며, 3차원 베지어 곡선으로 나타내면 아래 그림과 같다.

https://cubic-bezier.com/

곡선을 아래와 같이 만든다면 반동으로 움직이는 듯한 애니메이션을 구현할 수 있다.

 

아래 사이트에 방문하면 여러가지 3차원 베지어 곡선을 만들어서 테스트 할 수 있다. 

 

cubic-bezier.com

 

cubic-bezier.com

# animation-delay

애니메이션이 시작할 시점을 정의한다.

animation-delay: 2s; // 2초 뒤에 애니메이션이 시작된다.
animation-delay: -2s; // 즉시 시작되지만 애니메이션 시작 시점이 2초가 지난 시점부터 시작된다.

# animation-iteration-count

애니메이션 재생 횟수를 정의한다.

 

infinite

애니메이션이 영원히 반복된다.

 

<number>

재생 횟수를 정의한다. 기본값은 1이다.

# animation-direction

애니메이션이 앞뒤로 번갈아 재생되어야하는지 여부를 정의한다.

 

normal

기본값으로, 정방향으로 재생된다.

 

reverse

역방향으로 재생된다.

 

alternate

반복 주기마다 방향을 뒤집으며 재생된다. 첫번째 반복은 정방향으로, 그 다음은 역방향으로 재생된다.

 

 

alternate-reverse

반복 주기마다 방향을 뒤집으며 재생된다. 첫번째 반복은 역방향으로, 그 다음은 정방향으로 재생된다.

 

# animatoin-fill-mode

애니메이션이 실행 전과 후에 대상에 스타일을 적용하는 방법을 정의한다.

 

none

기본값으로, 애니메이션이 끝나면 처음 스타일로 돌아간다.

 

forwards

애니메이션이 끝난 후 스타일을 유지한다.

 

backwards

 

both

# animation-play-state

애니메이션이 실행 중이거나 일시 정지되어 있는지 여부를 확인한다.

일시 중지 된 애니메이션을 다시 시작하면 중단 된 위치부터 애니메이션이 시작된다.

 

running

애니메이션 재생

 

paused

애니메이션 일시 정지

# animation

축약 속성인 animation을 사용하여 모든 애니메이션 속성을 한번에 설정할 수 있다.

순서는 상관없다.

animation: 3s ease-in 1s reverse forwards slidein;

 


728x90