동이의 개발일지

CSS 애니메이션 @keyframe이란 무엇일까? 본문

웹 개발/HTML,CSS

CSS 애니메이션 @keyframe이란 무엇일까?

개발하는 동이 2024. 9. 2. 10:31
728x90

@keyframe이란 무엇이냐에 대해 말하기 전에  toss, apple 같은 사이트에 가면 웹 스크롤을 내리는데 아래에서 뭔가 뿅 하고 나오고? 옆에서 나오며 동영상이 아닌데 스크롤을 내리면 동영상을 제작하는 듯한 느낌이 날 때가 있죠? 

 

css 애니메이션 효과를 준 것 인데요

물론 자바스크립트로도 구현할 수 있지만 제 기준에서는 css, scss에서 구현하기 더 쉬운 거 같아요

js를 몰라도 구현이 가능하며 성능도 js로 만들었을 때보다 frame-skipping 같은 여러 기술을 이용하여 최대한 부드럽게 렌더링을 합니다.

 

CSS 애니메이션 문법

/* 단일 속성 */
.object {
    animation-name: 1s;
    // 애니메이션의 이름을 지정합니다.
    animation-duration: 2s;
    // 애니메이션의 한사이클 횟수를 지정합니다.
    animation-delay: 1s;
    // 애니메이션이 로드되고 나서 언제 시작할지 지정합니다.
    animation-direction: alternate;
    // 애니메이션의 재생 방향을 지정합니다.
    animation-iteration-count: 3;
    // 애니메이션의 반복 횟수를 지정합니다.
    animation-play-state: paused;
    // 애니메이션을 재생 멈춤을 할 수 있도록 합니다. 
    animation-timing-function: 1s;
    // 애니메이션의 좐환을 어떤 시간 간격으로 진행할지 결정합니다.
    animation-fill-mode: both;
    // 애니메이션이 시작 혹은 종료 때 어떤 값을 적용할지 지정합니다.
}
    
/* 속기형 */
animation: name | duration | timing-function | delay | iteration-count | 
direction | fill-mode | play-state> [,...];

 

@keyframe 문법

@keyframes animation-name {
  from {
    /* 애니메이션 시작 시의 스타일 */
  }
  to {
    /* 애니메이션 끝 시의 스타일 */
  }
}

// 더 세밀하게 백분율을 사용하여
@keyframes animation-name {
  0% {
    /* 애니메이션 시작 시의 스타일 */
  }
  50% {
    /* 애니메이션 중간 시의 스타일 */
  }
  100% {
    /* 애니메이션 끝 시의 스타일 */
  }
}

// 혹은 시간을 설정
@keyframes slide {
  0% {
    transform: translateX(-100%);
  }
  50% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(100%);
  }
}

.element {
  animation: slide 3s ease-in-out infinite;
}

 

장점

1. 다양한 애니메이션 효과

2. css와의 통합

3. 재사용성

단점

1. 호환성

2. 제한된 기능

3. 디버깅어려움


 

느낀 점 

공부하면서 정말 transition 등 애니메이션 명령어는 끝이 없는 거 같았습니다. 이것 또한 프런트엔드 개발자의 역량이 되겠죠... 역시 아직 할 공부는 많고 많이 멀었습니다. 할 말은 많지만 다 적으면 내용보다 길꺼같으니 한마디로 요약하면 다 같이 열심히 하죠!

728x90
반응형

'웹 개발 > HTML,CSS' 카테고리의 다른 글

SCSS란 무엇인가여  (0) 2025.01.05
Tailwind Css (설치 및 간단 사용법)  (0) 2024.08.18
웹 개발의 기본 HTML, CSS는 무엇일까?  (0) 2024.06.15