- 간단 설명
- transition보다 더 정교한 애니메이션이 가능합니다.
-
그렇다 하더라도 10초 이상의 만화영화 같은 애니메이션은 설계 및 제작이 힘듭니다.
5초 이내 또는 단순 무한 반복(loop) 애니메이션을 제작할때만 추천합니다. - 2D, 3D transform과 같이 사용할 수 있습니다.
- 페이지가 로드되면서 자동 시작될 수 있습니다.
- click, hover, focus등의 이벤트가 없어도 애니메이션을 작동시킬 수 있습니다.
하단의 예제만으로 이해가 된다면 밑의 설명글은 굳이 필요 없습니다.
@keygrames myName {
0% { left: 0; background-color: blue; }
100% { left: 100%; background-color: pink; }
}
.box {
position: absolute; left: 50%; top: 100px;
width: 100px; height: 100px;
animation: myName 2s infinite ease-in-out alternate both 0s;
}
항상 animation의 모든 속성을 사용하는 것은 아니지만, 필요할 때(적재적소에) 사용하려면 각 속성의 역할은 확실히 알아야 합니다.
초급에게는 어려울 수 있는 내용이므로 단순 반복 학습으로 천천히 이해하는 방법을 추천합니다.
CSS 구문
@keyframes Rule
2개의 주축이 되는 키프레임 사이에 위치한 중간 프레임의 움직임을 자동으로 처리하는 선형 보간(Linear Interpolation) 방식 애니메이션입니다.
키프레임을 더 많이 만들수록 더 디테일한 움직임을 표현할 수 있습니다.
Animation 속성 설명 및 선언 방법
1. 속성별 선언
animation-name: myName;
animation-duration: 4s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in-out;
animation-fill-mode: forwards;
animation-delay: 2s;
2. 속성 설명
속성의 이름이 길기 때문에 아래 속성 이름에서는 animation-부분을 생략했습니다.
실제 속성별로 선언할 때는 'animation-name' 이런 식으로 작성되어야 합니다.
버튼을 클릭하여 해당 속성의 값이 어떻게 작동되는지 확인할 수 있습니다.
name
(필수 선언)
@keyframes Rule에서 선언한 애니메이션 이름을 적용합니다.
이 페이지에서는 myName이라는 이름을 지어 사용했습니다.
값 : 당신이 @keyframes에 선언한 이름
duration
(필수 선언)
@keyframe Rule에서 선언한 0%부터 100%까지의 움직임을 몇 초에 걸쳐 구현할 지 선언합니다.
1s는 1초이며, 0.1s는 숫자 0를 생략하고 .1s로 표기 가능합니다.
(ms의 단위로 할 경우 1초 = 1000ms)
값 : #s or #ms
iteration-count
애니메이션을 얼마나 반복시킬 지 정의합니다. 숫자(양의 정수)와 infinite(무한 반복)만 선언 가능합니다.
만약 숫자 5를 선언하면 다섯번 반복 후 애니메이션이 정지됩니다.
기본값은 1이며 기본값으로 사용할 경우 생략 가능합니다.
값 : 숫자(1~), infinite
direction
timing-function
아래 5. Steps 선언에서 자세히 다룹니다.
아래 5. Steps 선언에서 자세히 다룹니다.
fill-mode
left: 50px; //css 위치
animation: myName 2.5s ease;
delay
효과의 지연시간을 정의합니다.
3s(3초)로 설정하면 이벤트 발생 후 3초 후에 animation이 작동됩니다.
지연시간이 필요 없으면 생략 가능합니다.
값 : #s or #ms
play-state
3. 축약형 선언
transition과 마찬가지로 속성을 축약하여 선언할 수 있습니다.
animation: myName .5s 2s ease-in infinite alternate both;
}위 예문의 작성순서는 다음과 같습니다.
animation: name duration delay timing-function iteration-count direction fill-mode;
}4. 복수 선언
콤마(,)로 구분하여 두 개 이상의 @keyframes Rule로 정의 된 애니메이션을 한번에 선언할 수 있습니다.
5. Steps 선언
애니메이션의 흐름을 Step(단계)화해서 제어할 수 있습니다.
duration 값과 연계해서 선언하여 일종의 Frame Rate(초당 프레임 수)를 설정하거나 혹은, 셀 애니메이션처럼 연계된 동작을 표현할 수도 있습니다.
steps(스텝 수)로 선언합니다.
5-1. Steps 예제 (시계 초침)
steps() 미적용
steps(60) 적용
5-2. Steps 예제 (셀 애니)
steps() 미적용
steps(10) 적용