CSS Animation

허정철·2021년 7월 7일

CSS Animation이란?

웹사이트에서 Interaction한 효과를 구현하고자 할 때 사용되는 것.

사용자가 어떠한 액션을 취하지 않더라도 자기 스스로 움직이는 효과를 구현하고자 할 때 주로 CSS Animation이 사용된다.

과거에는 JavaScript로만 구현을 해야 했지만 시간이 지나면서 CSS가 발전하면서 간단한 애니메이션 효과를 구현해 낼 수 있게 되었다.

CSS Animation 속성

1.Transform

  • 선택한 Object의 크기를 확대/축소, 각도 회전, 위치 변경에 사용된다.

Rotate

  • 선택된 영역에 회전효과를 적용하는 속성.
    transform: rotate(45deg)
    : rotate는 2차원 적인 회전 효과를 의미한다.
    평면적으로 회전을 하게되고 음수(왼쪽 회전)/양수(오른쪽 회전)를 전달할 수 있다

Scale

  • 선택한 영역의 크기를 비율로 확대/축소 할 때 사용되는 속성.
    transform: scale(2, 3);
    : 2는 x축(width)으로 2배 3은 y축(height)으로 3배 늘린다는 뜻을 의미한다.
    소수점 단위를 이용하여 비율을 줄일 수도 있다.

Skew

  • 선택한 영역의 각도에 영향을 미치는 속성, 3차원적인 회전 효과를 적용한다.
    transform: skew(10deg, 20deg);
    : 10deg는 x축으로 회전, 20deg y축으로 회전. 음수값을 적용하면 반대로 움직인다. 해외에서는 다양한 역동적인 애니메이션 효과를 적용하기 위해 자주 사용되는 편.

Translate

  • 선택한 영역의 Object를 위치를 변경할 때 사용되는 속성.
    transform: translate(100px, 300px);
    : 100px는 x축으로 이동, 300px은 y축으로 이동. 최근에는 translate 속성으로 배치작업을 하는 경우가 일부 있다.

각 브라우저 하위버전까지 transform 적용을 원할시 prefix를 적용하면 된다.

-webkit-transform: rotate(10deg); < 크롬, 사파리 >
-moz-transform: rotate(10deg);  < 파이어폭스 >
-ms-transform: rotate(10deg); < 익스플로러 >
-o-transform: rotate(10deg);  < 오페라 >

Transition

: 애니메이션이 변화하는 과정을 보여주고 싶을 때 사용된다.

  • 변화를 주고자 하는 영역 설정
    transition-property: width;
  • 애니매이션이 진행되는 시간 설정.
    transition-duration: 2s;
  • 애니메이션이 움직이는데 속도의 성격 지정 설정
    transition-timing-function: linear;
  • 약간의 딜레이를 적용한 이후에 에니메이션 효과를 발동시킬 때 사용되는 속성
    transition-delay: 1s;

네줄짜리 코드를 한줄로 요약하면,
transition: width 2s linear 1s;

주의점) 순서는 상관이 없지만, 단 duration과 delay는 순서를 지켜줘야 한다.(1.duration 2.delay)

Animation 속성

자연스럽게 Object가 자동으로 움직이는 효과를 만들 때 사용되는 속성.

  • 만들고자 하는 애니메이션의 이름을 정의.(이름은 본인이 원하는 이름대로 작성하면 된다)
    animation-name: changeWidth;
  • 애니매이션이 진행되는 시간 설정.
    animation-duration: 3s;
  • 애니메이션이 움직이는데 속도의 성격 지정 설정
    animation-timing-function: linear;
  • 약간의 딜레이를 적용한 이후에 에니메이션 효과를 발동시킬 때 사용되는 속성
    animation-delay: 1s;

(Animation에만 있는 추가 속성)

  • 애니메이션의 진행 횟수를 의미한다.
    animation-iteration-count: 6;(Infinite : 무한반복)
  • 애니매이션의 진행 방향
    animation-direction: normal;
    (normal: 편도 / alternate: 왕복)

animation-name: spinLion;
animation-duration: 1000ms;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;

네줄짜리 코드를 한줄로 요약하면,
animation: spinLion 1.5s linear infinite alternate 1s;

주의점) 순서는 상관이 없지만, 단 duration과 delay는 순서를 지켜줘야 한다.(1.duration 2.delay)

Animation에서도 prefix를 적용 할 수 있다.
보통은 가장 앞에 적용하면 되지만 단, @(prefix)Keyframes.

profile
AI School for Daegu

0개의 댓글