볞묞 바로가Ʞ
Stylesheet/CSS

[CSS3]CSS 애니메읎션 속성 쎝정늬: 맀력적읞 웹 페읎지 만듀Ʞ

by YJ Dev 2024. 5. 29.
728x90
반응형
SMALL

CSS 애니메읎션은 요소의 슀타음을 시간에 따띌 변화시킀는 것을 의믞합니닀. 읎륌 통핎 웹 페읎지에 동적읞 횚곌륌 추가할 수 있습니닀. 읎번 포슀팅에서는 CSS 애니메읎션의 Ʞ볞 개념부터 고꞉ 활용법까지 닀룚겠습니닀.

CSS 애니메읎션은 transition 전환 횚곌륌 자연슀럜게 구현하Ʞ 위한 속성읎므로 CSS transition 전환 횚곌 속성을 뚌저 확읞핎 뎅시닀😁

" "

[CSS3]CSS 전환횚곌 완벜 가읎드: 웹사읎튞에 생동감을 더하는 비밀!

CSS 전환횚곌는 웹사읎튞의 요소가 상태륌 변겜할 때 부드럜게 변하도록 만듀얎죌는 강력한 도구입니닀. 읎러한 전환횚곌는 웹사읎튞에 생동감을 더하고 사용자 겜험을 향상하는 데 쀑요한 역

creativevista.tistory.com

css 애니메읎션

CSS 애니메읎션 Ʞ볞 개념📚

CSS 애니메읎션은 CSS륌 사용하여 웹 요소의 몚양, 위치 또는 특성을 변겜하여 애니메읎션 횚곌륌 만드는 Ʞ술입니닀. CSS 애니메읎션의 죌요 속성듀은 닀음곌 같습니닀.

  • @keyframes: 애니메읎션의 쀑간 닚계륌 정의합니닀.
  • animation-name: 적용할 애니메읎션의 읎늄을 지정합니닀.
  • animation-duration: 애니메읎션읎 완료되는 데 걞늬는 시간을 섀정합니닀.
  • animation-timing-function: 애니메읎션 속도의 변화륌 섀정합니닀.
  • animation-delay: 애니메읎션 시작 전 지연 시간을 섀정합니닀.
  • animation-iteration-count: 애니메읎션 반복 횟수륌 섀정합니닀.
  • animation-direction: 애니메읎션의 재생 방향을 섀정합니닀.
  • animation-fill-mode: 애니메읎션읎 끝난 후의 상태륌 섀정합니닀.
  • animation-play-state: 애니메읎션의 재생 및 음시 정지 상태륌 제얎합니닀.

@keyframes륌 사용한 애니메읎션 섀정🎬

킀프레임(keyframes)은 CSS 애니메읎션에서 사용되는 쀑요한 개념 쀑 하나입니닀. 킀프레임은 애니메읎션 쀑간에 요소가 가질 수 있는 특정 상태륌 정의하는 데 사용됩니닀.

킀프레임은 애니메읎션의 시작(0%)곌 끝(100%) 지점에서 요소의 슀타음을 정의합니닀. 귞러나 시작곌 끝을 명확하게 표현하Ʞ 위핎 from곌 to 킀워드륌 사용할 수도 있습니닀. 또한 원하는 겜우 시작곌 끝 사읎에 여러 쀑간 지점을 추가하여 더 복잡한 애니메읎션을 만듀 수도 있습니닀.

킀프레임은 @keyframes 규칙을 사용하여 정의됩니닀. 읎 규칙은 닀음곌 같은 구조륌 가지고 있습니닀.

@keyframes 애니메읎션명 {
  0% {
    /* 요소의 시작 슀타음 */
  }
  50% {
    /* 요소의 쀑간 슀타음 */
  }
  100% {
    /* 요소의 끝 슀타음 */
  }
}

여Ʞ서 애니메읎션명은 핎당 킀프레임을 찞조하는 데 사용됩니닀. 킀프레임 낎부에는 특정 시점에서 요소의 슀타음을 지정하는 규칙읎 포핚됩니닀. 예륌 듀얎, 0% 킀프레임은 애니메읎션의 시작 지점을 나타낎며, 100% 킀프레임은 애니메읎션의 끝 지점을 나타냅니닀.

예제

아래는 ê°„ë‹ší•œ 예제입니닀. 읎 예제에서는 넀몚 상자의 색상을 애니메읎션을 통핎 변겜합니닀.

@keyframes changeColor {
  0% {
    background-color: red;
  }
  50% {
    background-color: blue;
  }
  100% {
    background-color: green;
  }
}

.box {
  width: 100px;
  height: 100px;
  animation-name: changeColor;
  animation-duration: 3s;
}

읎 예제에서는 changeColor띌는 킀프레임을 정의하고, 0%, 50%, 100%에서 각각 닀륞 색상을 지정합니닀. 읎 애니메읎션을 .box 요소에 적용하멎 3쎈 동안 빚간색에서 파란색윌로 변한 ë’€, 쎈록색윌로 변겜됩니닀.

css 애니메읎션 킀프레임

애니메읎션 속성 섞부 섀명 및 예제🎚

animation-name

animation-name 속성은 CSS 애니메읎션을 지정할 때 사용됩니닀. 읎 속성은 특정 킀프레임 규칙 집합을 찞조하여 애니메읎션을 정의합니닀.

예제

음반적윌로 @keyframes 규칙 집합을 찞조하여 애니메읎션을 정의하며, animation-name 속성을 사용하여 핎당 애니메읎션을 지정합니닀. animation-name에는 사용자가 원하는 읎늄을 지정할 수 있윌며, 읎 읎늄은 @keyframes 규칙 집합의 읎늄곌 음치핎알 합니닀.

예륌 듀얎, 닀음은 @keyframes 규칙 집합을 찞조하는 changeColor띌는 읎늄의 애니메읎션을 지정하는 예제입니닀.

@keyframes changeColor {
  0% {
    background-color: red;
  }
  50% {
    background-color: blue;
  }
  100% {
    background-color: green;
  }
}

.box {
  width: 100px;
  height: 100px;
  animation-name: changeColor; /* 애니메읎션 읎늄 섀정 */
  animation-duration: 3s;
}

읎 윔드에서 animation-name: changeColor; 부분은 changeColor띌는 읎늄의 애니메읎션을 지정합니닀. 읎는 @keyframes 규칙 집합에서 정의된 changeColor 애니메읎션을 찞조하여 요소에 애니메읎션을 적용합니닀.

animation-duration

animation-duration 속성은 CSS 애니메읎션읎 한 죌Ʞ륌 완료하는 데 걞늬는 시간을 지정합니닀. 읎 속성은 쎈(second) 닚위로 지정됩니닀.

예제

예륌 듀얎, 닀음 CSS 윔드에서는. box 요소에 changeColor 애니메읎션을 적용하고 있습니닀. 읎 애니메읎션은 쎝 3쎈 동안 싀행됩니닀.

@keyframes changeColor {
  0% {
    background-color: red;
  }
  50% {
    background-color: blue;
  }
  100% {
    background-color: green;
  }
}

.box {
  width: 100px;
  height: 100px;
  animation-name: changeColor;
  animation-duration: 3s; /* 애니메읎션 지속 시간 섀정 */
}

읎 겜우, animation-duration: 3s;은 애니메읎션읎 3쎈 동안 싀행되는 것을 의믞합니닀. 슉, 애니메읎션읎 시작하여 3쎈 후에 종료됩니닀. 읎 시간 동안 애니메읎션은 킀프레임 규칙에 정의된 속성에 따띌 요소의 슀타음읎 변겜됩니닀.

animation-timing-function

animation-timing-function 속성은 CSS 애니메읎션의 시간 겜곌에 따륞 속도륌 지정합니닀. 슉, 애니메읎션읎 시작부터 끝까지 진행되는 동안 속도가 얎떻게 변겜되는지륌 결정합니닀.

읎 속성은 닀양한 값을 가질 수 있윌며, 각 값은 애니메읎션읎 ì–Žë–€ 속도로 진행될지륌 나타냅니닀. 죌요한 값듀로는 닀음읎 있습니닀:

  1. ease: Ʞ볞값윌로, 처음에는 느늬게 시작하여 쀑간에는 빠륎게, 나쀑에는 닀시 느늬게 종료됩니닀. 음반적윌로 자연슀러욎 애니메읎션에 많읎 사용됩니닀.
  2. linear: 애니메읎션읎 음정한 속도로 진행됩니닀. 선형적읞 속도륌 가지며, 시작부터 끝까지 동음한 속도로 진행됩니닀.
  3. ease-in: 처음에는 느늬게 시작하여 점찚 가속화됩니닀. 애니메읎션 시작 부분에서 더 빠륞 속도가 필요한 겜우에 유용합니닀.
  4. ease-out: 처음에는 빠륎게 시작하여 후반에 느늬게 종료됩니닀. 애니메읎션읎 끝나는 부분에서 더 부드러욎 종료륌 위핎 사용됩니닀.
  5. ease-in-out: 시작곌 끝 몚두에서 느늬게 시작하여 쀑간에는 가속화되고, 나쀑에는 닀시 느늬게 종료됩니닀.

읎 왞에도 cubic-bezier() 핚수륌 사용하여 사용자 정의 타읎밍 핚수륌 지정할 수 있습니닀. 읎 핚수는 4개의 값을 가지며, 각 값은 x와 y의 좌표륌 나타냅니닀. 읎 좌표는 타읎밍 핚수의 귞래프륌 결정하는 데 사용됩니닀.

예제

예륌 듀얎, 닀음은 ease-in-out 타읎밍 핚수륌 사용하여 애니메읎션을 정의하는 예제입니닀.

@keyframes changeColor {
  0% {
    background-color: red;
  }
  50% {
    background-color: blue;
  }
  100% {
    background-color: green;
  }
}

.box {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: changeColor;
  animation-duration: 3s;
  animation-timing-function: ease-in-out; /* 타읎밍 핚수 섀정 */
}

읎 윔드에서는 ease-in-out 타읎밍 핚수륌 사용하여 애니메읎션읎 부드럜게 시작하고 부드럜게 종료되도록 섀정되었습니닀.

css 애니메읎션

animation-delay

animation-delay CSS 속성은 애니메읎션의 시작을 지연시킀는 데 사용됩니닀. 읎 속성을 사용하멎 애니메읎션읎 특정 시간(쎈 또는 밀늬쎈) 읎후에 시작될 수 있습니닀.

예제

예륌 듀얎, 닀음곌 같은 CSS 윔드가 있닀고 가정핎 뎅시닀.

@keyframes changeColor {
  0% {
    background-color: red;
  }
  50% {
    background-color: blue;
  }
  100% {
    background-color: green;
  }
}

.box {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: changeColor;
  animation-duration: 3s;
  animation-delay: 1s; /* 1쎈 후에 애니메읎션읎 시작됚 */
}

위의 윔드는 애니메읎션을 시작하Ʞ 전에 1쎈륌 Ʞ닀늬도록 지연시킵니닀. 따띌서 요소에. box 큎래슀가 적용되멎 애니메읎션은 1쎈 후에 시작됩니닀. 읎 속성은 음수 값을 가질 수도 있습니닀. 음수 값은 애니메읎션읎 시작하Ʞ 전에 음부 애니메읎션 프레임을 생략할 수 있음을 의믞합니닀.

css 애니메읎션

예륌 듀얎, -1s 값을 가지는 겜우, 애니메읎션은 Ʞ볞적윌로 시작 전의 1쎈간의 상태륌 생략하고 애니메읎션을 슉시 시작합니닀.

animation-delay 속성은 애니메읎션읎 여러 요소에 적용되는 겜우에도 유용하게 사용될 수 있습니닀. 예륌 듀얎, 요소 간에 애니메읎션을 겹치지 않고 음정한 간격을 두고 시작하도록 조정할 수 있습니닀.

읎러한 방식윌로 animation-delay 속성을 사용하여 애니메읎션의 타읎밍을 조정할 수 있습니닀.

animation-iteration-count

animation-iteration-count CSS 속성은 애니메읎션의 반복 횟수륌 지정하는 데 사용됩니닀. 읎 속성을 사용하멎 애니메읎션읎 몇 번 반복되는지륌 섀정할 수 있습니닀.

Ʞ볞적윌로, animation-iteration-count 속성은 1로 섀정되얎 있윌며, 읎는 애니메읎션읎 한 번만 싀행됚을 의믞합니닀. 귞러나 읎 값을 닀륎게 섀정하여 애니메읎션을 여러 번 반복하도록 할 수 있습니닀.


여러 옵션읎 있습니닀.

  • 숫자: 애니메읎션읎 명시된 횟수만큌 반복됩니닀. 예륌 듀얎, animation-iteration-count: 2;는 애니메읎션읎 두 번 반복됚을 의믞합니닀.
  • infinite: 애니메읎션읎 묎한히 반복됩니닀. animation-iteration-count: infinite;륌 섀정하멎 애니메읎션읎 끝없읎 계속 반복됩니닀.
  • initial: 읎 속성을 Ʞ볞값윌로 쎈Ʞ화합니닀.
  • inherit: 부몚 요소로부터 상속된 값윌로 섀정합니닀.

예제

예륌 듀얎, 닀음 CSS 윔드에서는 애니메읎션읎 묎한히 반복됩니닀.

@keyframes changeColor {
  0% {
    background-color: red;
  }
  50% {
    background-color: blue;
  }
  100% {
    background-color: green;
  }
}

.box {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: changeColor;
  animation-duration: 3s;
  animation-iteration-count: infinite; /* 묎한 반복 */
}

css 애니메읎션

animation-direction

animation-direction CSS 속성은 애니메읎션의 진행 방향을 섀정하는 데 사용됩니닀. 읎 속성은 애니메읎션읎 정방향윌로 싀행되는지 역방향윌로 싀행되는지륌 결정합니닀.

죌요 옵션은 닀음곌 같습니닀.

  • normal: 애니메읎션읎 정방향윌로 싀행됩니닀. 처음부터 끝까지 순찚적윌로 진행됩니닀.
  • reverse: 애니메읎션읎 역방향윌로 싀행됩니닀. 마지막 프레임에서 시작하여 처음 프레임까지 역순윌로 진행됩니닀.
  • alternate: 애니메읎션읎 번갈아가며 진행됩니닀. 한 번은 정방향윌로, 닀음에는 역방향윌로 싀행됩니닀. 읎것은 infinite 반복곌 핚께 사용될 때 특히 유용합니닀.
  • alternate-reverse: alternate와 비슷하지만, 역방향에서 시작하여 정방향윌로 진행됩니닀.

Ʞ볞적윌로 animation-direction은 normal로 섀정되얎 있습니닀.

예제

예륌 듀얎, 닀음 CSS 윔드는 애니메읎션을 번갈아가며 반복하도록 섀정합니닀.

@keyframes changeColor {
  0% {
    background-color: red;
  }
  50% {
    background-color: blue;
  }
  100% {
    background-color: green;
  }
}

.box {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: changeColor;
  animation-duration: 3s;
  animation-iteration-count: infinite;
  animation-direction: alternate; /* 번갈아가며 진행 */
}

위 윔드에서 animation-direction 속성은 alternate로 섀정되얎 있윌므로 애니메읎션읎 번갈아가며 반복됩니닀.

css 애니메읎션

animation-fill-mode

animation-fill-mode CSS 속성은 애니메읎션읎 싀행되Ʞ 전읎나 후에 요소에 슀타음을 적용하는 방법을 제얎합니닀.

죌요 옵션은 닀음곌 같습니닀.

  • none: Ʞ볞값윌로, 애니메읎션 읎전 및 읎후에 요소에 슀타음을 적용하지 않습니닀.
  • forwards: 애니메읎션읎 완료된 후에 마지막 프레임의 슀타음읎 유지됩니닀.
  • backwards: 애니메읎션읎 시작되Ʞ 전에 첫 번짞 프레임의 슀타음읎 적용됩니닀.
  • both: forwards 및 backwards의 횚곌륌 몚두 적용합니닀. 애니메읎션읎 시작하Ʞ 전에 첫 번짞 프레임의 슀타음읎 적용되고, 완료된 후에는 마지막 프레임의 슀타음읎 유지됩니닀.

예제

예륌 듀얎, 닀음 CSS 윔드는 애니메읎션을 싀행하Ʞ 전에 첫 번짞 프레임의 슀타음을 유지합니닀.

@keyframes changeColor {
  0% {
    background-color: red;
  }
  50% {
    background-color: blue;
  }
  100% {
    background-color: green;
  }
}

.box {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: changeColor;
  animation-duration: 3s;
  animation-iteration-count: infinite;
  animation-fill-mode: backwards; /* 애니메읎션 읎전에 첫 번짞 프레임의 슀타음 적용 */
}

읎렇게 하멎 애니메읎션읎 시작되Ʞ 전에 요소에 0% 프레임의 슀타음읎 적용되얎 빚간색윌로 섀정됩니닀.

css 애니메읎션

animation-play-state

animation-play-state CSS 속성은 애니메읎션의 재생 상태륌 제얎합니닀. 읎 속성을 사용하여 애니메읎션을 음시 쀑지하거나 닀시 재생할 수 있습니닀.

죌요 옵션은 닀음곌 같습니닀.

  • running: 애니메읎션읎 재생됩니닀. 읎것읎 Ʞ볞값입니닀.
  • paused: 애니메읎션읎 음시 쀑지됩니닀.

예륌 듀얎, 닀음 CSS 윔드는 애니메읎션을 큮멭할 때마닀 음시 쀑지하거나 닀시 재생합니닀.

.box {
  width: 100px;
  height: 100px;
  background-color: red;
  animation-name: changeColor;
  animation-duration: 3s;
  animation-iteration-count: infinite;
  cursor: pointer; /* 마우슀 컀서륌 포읞터로 변겜 */
}

.paused {
  animation-play-state: paused; /* 애니메읎션 음시 쀑지 */
}

귞늬고 JavaScript륌 사용하여 요소륌 큮멭할 때마닀 애니메읎션의 재생 상태륌 변겜할 수 있습니닀.

document.querySelector('.box').addEventListener('click', function() {
  this.classList.toggle('paused'); // 큮멭할 때마닀 음시 쀑지/재생 상태륌 전환합니닀.
});

읎렇게 하멎. box 요소륌 큮멭할 때마닀 애니메읎션읎 음시 쀑지되거나 닀시 재생됩니닀.

css 애니메읎션

복합 애니메읎션 만듀Ʞ🔀

여러 애니메읎션을 동시에 적용하멎 더욱 복잡하고 맀력적읞 횚곌륌 만듀 수 있습니닀. 아래의 예제는 읎동곌 투명도 변화륌 동시에 적용한 애니메읎션입니닀.

@keyframes move {
  0% { transform: translateX(0); }
  50% { transform: translateX(50px); }
  100% { transform: translateX(0); }
}

@keyframes fade {
  0% { opacity: 1; }
  50% { opacity: 0.5; }
  100% { opacity: 1; }
}

.element {
  animation: move 3s infinite, fade 2s infinite;
}

css 애니메읎션

아래 윔드는 요소가 왌쪜에서 였륞쪜윌로 읎동하멎서 나타나는 애니메읎션을 정의합니닀.

@keyframes slideIn {
  from { transform: translateX(-100%); }
  to { transform: translateX(0); }
}

.header {
  width: 100px;
  height: 50px;
  background-color: blue;
  color: white;
  animation: slideIn 1s ease-in-out forwards;
  /* 애니메읎션읎 완료된 후에 마지막 슀타음 유지 */
}

css 애니메읎션

아래 예제는 요소가 좌우로 읎동하멎서 동시에 투명도가 변화하는 애니메읎션을 적용한 예제입니닀.

* {
  padding: 0;
  margin: 0;
}

body {
  background-color: #747eff;
}

@keyframes test {
  0% {
    border-radius: 0px;
  }
  30% {
    border-radius: 50px 0 0 0;
    background-color: #fae573;
  }
  50% {
    border-radius: 0 50px 0 0;
    background-color: #76b47d;
  }
  100% {
    border-radius: 100px;
    background-color: #303efd;
  }
}

.ani {
  width: 100px;
  height: 100px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50px, -50px);
  background-color: #ff9259;
  animation-name: test;
  animation-duration: 2s;
  animation-iteration-count: infinite;
  animation-direction: alternate;
  animation-delay: 2s;
  animation-timing-function: ease-in-out;
}

.ani:hover {
  animation-play-state: paused;
}

css 애니메읎션

최적화 및 성능 고렀사항⚡

CSS 애니메읎션을 사용할 때 성능을 최적화하는 것읎 쀑요합니닀. 닀음은 성능을 최적화하는 방법입니닀.

  • 하드웚얎 가속 사용: transform곌 opacity 속성을 사용하여 GPU 가속을 활성화합니닀.
  • 필요한 겜우에만 애니메읎션 사용: 애니메읎션읎 너묎 많윌멎 페읎지 성능읎 저하될 수 있습니닀.
  • 애니메읎션의 복잡성 최소화: ê°„ë‹ší•œ 애니메읎션읎 성능에 더 유늬합니닀.

핵심 낎용👀

css 애니메읎션

728x90
반응형