-
Notifications
You must be signed in to change notification settings - Fork 0
CSS Transition과 CSS Animation
박수정 edited this page Sep 3, 2024
·
4 revisions
CSS 속성들 중 주로 숫자로 값이 표현되는 속성들(색상 포함)의 값이 변할 때,
중간 과정을 애니메이션으로 만들어 주는 기능
💡 Transition은 자동으로 재생되지 않는다. 마우스를 올리든 특정 클래스가 추가되든, 어떤 액션이 있어야 실행된다.
페이지가 로드되고 자동으로 재생되는 걸 원한다면, 아래에 있는 CSS Animation을 사용.
💡 속성마다 따로 적용하고 싶다면, 다른 CSS 속성들과 마찬가지로 쉼표로 구분
-
transition-property
: Transition을 적용할 CSS 속성 이름
기본값은 all로, 가능한 모든 속성에 Transition을 적용 -
transition-duration
: Transition 효과를 지속(재생)하는 시간
초(s) 또는 밀리초(ms) 단위 -
transition-delay
: Transition이 시작되기 전 대기 시간
초(s) 또는 밀리초(ms) 단위를 사용 -
transition-timing-function
: 가속이나 감속을 적용해서, 애니메이션의 느낌, 텐션을 조정
Transition과 마찬가지로 CSS 값의 변화에 따라 애니메이션 효과를 만들어 주는데 Transition보다 기능이 더 많다.
키프레임 개념이 있어서 애니메이션 중간에 원하는 지점에서 CSS에 변화를 줄 수 있고,
일시정지나 재생 등의 컨트롤도 가능하다.
-
animation-name
: 애니메이션의 이름. 원하는 곳에서 애니메이션을 사용할 때, 이 이름을 사용@keyframes 원하는이름
-
animation-duration
: 애니메이션을 지속(재생)하는 시간
초(s) 또는 밀리초(ms) 단위를 사용 -
animation-delay
: 애니메이션이 시작되기 전 대기 시간
초(s) 또는 밀리초(ms) 단위를 사용 -
animation-timing-function
: 가속이나 감속을 적용해서, 애니메이션의 느낌, 텐션을 조정 -
animation-iteration-count
: 애니메이션의 반복 횟수를 숫자로 지정
무한 반복을 원하면 infinite -
animation-direction
: 애니메이션의 재생 방향-
normal
정방향 재생. 타임라인 0%(from)에서 100%(to) 방향으로 -
reverse
역방향 재생. 타임라인 100%(to)에서 0%(from) 방향으로 -
alternate
정방향, 역방향, 정방향, 역방향… 으로 번갈아 가면서 재생 -
alternate-reverse
역방향, 정방향, 역방향, 정방향… 으로 번갈아 가면서 재생
-
-
animation-fill-mode
: 애니메이션이 재생되고 있지 않은 상태(시작 전, 후)에 어떤 스타일을 적용해줄 지 결정하는 속성-
none
재생 전, 후 모두 CSS에 선언된 스타일이 적용. -
forwards
재생 전에는 CSS에 선언된 스타일, 재생 후에는 타임라인의 100% 지점 스타일이 적용. -
backwards
재생 전에는 타임라인의 0% 지점 스타일, 재생 후에는 CSS에 선언된 스타일이 적용. -
both
재생 전에는 타임라인의 0% 지점 스타일, 재생 후에는 타임라인의 100% 지점 스타일이 적용.
-
-
animation-play-state
: 애니메이션의 재생 상태
running이 재생 중, paused는 일시 정지 상태
Transition과 Animation을 사용할 때는 Transform과 Opacity 두 속성에만 적용하는 것이 성능상 바람직하다.
특히 이동은 left, top 등의 속성 대신, transform의 translate, translateX, translateY, translate3d를 사용
- GPU 가속을 활용할 수 있어 성능에 긍정적인 영향
- 레이아웃 재계산 없이 요소의 시각적 표현만 변경하기 때문에 애니메이션 시 부드러운 전환을 제공
- 투명도 -
opacity
- 이동, 회전, 크기 변경, 기울임 -
transform
(translate, rotate, scale)
- 레이아웃이나 페인트 단계를 트리거할 수 있어 성능에 부정적인 영향
- 요소의 위치나 크기를 변경할 때 레이아웃을 다시 계산해야 하기 때문에 CPU 부하가 증가
- 위치 -
top
,left
,right
,bottom
- 크기 -
width
,height
- 간격 -
margin
,padding