코딩 스쿨 CSS

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

CSS Animations

CSS Animations: 웹 요소에 생동감 부여하기

CSS Animations는 웹 요소가 상태를 변화시키거나 애니메이션 효과를 추가할 수 있게 해주는 강력한 도구입니다. 애니메이션을 사용하면 텍스트, 이미지, 버튼 등의 요소에 움직임을 추가하여 더욱 시각적이고 사용자와 상호작용하는 웹 디자인을 만들 수 있습니다.

1. CSS 애니메이션의 기본 개념

CSS 애니메이션은 두 가지 주요 요소로 구성됩니다:

  • @keyframes: 애니메이션이 일어날 단계별 상태를 정의합니다.
  • 애니메이션 속성: 요소가 애니메이션을 어떻게, 얼마나 오래, 어떤 방식으로 실행될지 설정합니다.

기본 구문

@keyframes animation-name {
  from {
    /* 초기 상태 */
  }
  to {
    /* 최종 상태 */
  }
}

.element {
  animation-name: animation-name;
  animation-duration: 2s;
}
  • @keyframes: 애니메이션의 각 단계를 정의합니다.
  • animation-name: 실행할 애니메이션의 이름.
  • animation-duration: 애니메이션이 실행되는 시간.

2. @keyframes: 애니메이션 단계 정의

  • *@keyframes*를 사용하여 애니메이션의 시작 상태끝 상태, 또는 중간 단계를 설정할 수 있습니다.

기본 구문

@keyframes animation-name {
  0% {
    /* 애니메이션의 시작 상태 */
  }
  100% {
    /* 애니메이션의 끝 상태 */
  }
}

예시: 색상 변하는 애니메이션

@keyframes colorChange {
  0% {
    background-color: lightblue;
  }
  100% {
    background-color: lightcoral;
  }
}

.element {
  animation-name: colorChange;
  animation-duration: 3s;
}

이 코드는 요소의 배경색lightblue에서 lightcoral3초 동안 서서히 변하는 애니메이션을 적용합니다.

3. 주요 애니메이션 속성

애니메이션을 설정할 때 사용하는 주요 속성은 다음과 같습니다.

1) animation-name

애니메이션을 적용할 때 **@keyframes**에 정의한 애니메이션의 이름을 지정합니다.

2) animation-duration

애니메이션이 실행되는 시간을 설정합니다. 단위는 초(s) 또는 **밀리초(ms)**입니다.

animation-duration: 2s;

3) animation-timing-function

애니메이션의 속도 변화를 정의합니다. 주로 다음과 같은 값들이 사용됩니다:

  • ease: 느리게 시작하고, 빨라졌다가 다시 느려집니다(기본값).
  • linear: 애니메이션이 일정한 속도로 실행됩니다.
  • ease-in: 느리게 시작하고, 빠르게 끝납니다.
  • ease-out: 빠르게 시작하고, 느리게 끝납니다.
  • ease-in-out: 느리게 시작하고 끝납니다.
animation-timing-function: ease-in-out;

4) animation-delay

애니메이션이 시작되기 전 지연 시간을 설정합니다.

animation-delay: 1s;

5) animation-iteration-count

애니메이션이 얼마나 반복될지 설정합니다. 숫자infinite(무한 반복) 값을 가질 수 있습니다.

animation-iteration-count: 3;

6) animation-direction

애니메이션이 어떤 방향으로 진행될지 설정합니다.

  • normal: 애니메이션이 처음부터 끝까지 진행됩니다(기본값).
  • reverse: 애니메이션이 끝에서 시작으로 진행됩니다.
  • alternate: 애니메이션이 반복될 때 한 번은 정방향, 다음 번에는 역방향으로 진행됩니다.
animation-direction: alternate;

7) animation-fill-mode

애니메이션이 끝난 후 요소가 어떤 상태에 있을지 정의합니다.

  • none: 애니메이션 전후에 상태 변화를 적용하지 않습니다.
  • forwards: 애니메이션이 끝난 후 마지막 상태를 유지합니다.
  • backwards: 애니메이션이 시작되기 전에 시작 상태를 적용합니다.
  • both: 애니메이션 전후 모두 상태 변화를 적용합니다.
animation-fill-mode: forwards;

4. 여러 애니메이션 속성 적용

여러 애니메이션 속성을 동시에 적용할 수 있습니다. animation 속성을 사용해 모든 속성을 한 줄로 작성할 수 있습니다.

기본 구문

animation: [name] [duration] [timing-function] [delay] [iteration-count] [direction] [fill-mode];

예시: 여러 애니메이션 속성 함께 사용

@keyframes moveAndChange {
  0% {
    background-color: lightblue;
    transform: translateX(0);
  }
  100% {
    background-color: lightcoral;
    transform: translateX(200px);
  }
}

.element {
  animation: moveAndChange 4s ease-in-out 1s infinite alternate forwards;
}

이 코드는 요소가 배경색을 바꾸면서 200px 오른쪽으로 이동하며, 4초 동안 변하고 1초 지연무한 반복되며, 정방향-역방향으로 애니메이션이 진행됩니다.

5. 실전 예시: 버튼에 애니메이션 효과 적용

예시: 호버 시 버튼에 애니메이션 적용

@keyframes bounce {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

button {
  padding: 10px 20px;
  background-color: lightcoral;
  border: none;
  animation: bounce 1s ease infinite;
}

button:hover {
  background-color: lightgreen;
}

이 코드는 버튼이 위아래로 튀는(bounce) 애니메이션을 무한 반복하며, hover배경색이 바뀌는 효과를 적용합니다.

6. 실전 예시: 카드 플립 애니메이션

애니메이션을 사용하여 요소가 회전하면서 앞면과 뒷면이 전환되는 카드 플립 효과를 만들 수 있습니다.

예시: 카드 플립 애니메이션

.container {
  perspective: 1000px;
}

.card {
  width: 200px;
  height: 300px;
  position: relative;
  transform-style: preserve-3d;
  transition: transform 1s;
}

.card:hover {
  transform: rotateY(180deg);
}

.card .front, .card .back {
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
}

.card .back {
  transform: rotateY(180deg);
}

이 코드는 카드가 Y축을 기준으로 180도 회전하는 애니메이션을 적용하여 앞면과 뒷면이 전환되는 효과를 만듭니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com