Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 걸음마 중

CSS - 애니메이션 (transition, animation) 본문

dev/HTML + CSS

CSS - 애니메이션 (transition, animation)

꼿모 2023. 3. 13. 18:24


 

CSS 애니메이션 

 

 

🤔 transition vs animation

- transition : 요소의 상태가 변경되어야 애니메이션을 실행할 수 있다. 

- animation : 요소의 상태 변화와 관계없이 애니메이션을 실행할 수 있다.

 

 

 

 * transition 

- CSS 속성값이 변할 때, 값의 변화가 일정 시간에 걸쳐 일어나도록 하는 것을 말한다. 
- 단축 속성이다. 
- transition-property | transition-duration | transition-timing-function | transition-delay

.transition {
transition: width 2s linear 1s; 
}

/* width 속성을 | 2초 동안 | 처음부터 끝까지 일정한 속도로 | 1초 지연시킨 뒤에 효과가 일어남 */

 

 

 * transition-property 

- property : 속성 
- 전환 효과를 적용할 CSS 속성을 설정한다. 

  • all: 기본값 / 모든 속성에 transition 효과가 나타나게 한다.
  • none: 속성들이 transition 효과를 받지 못하게 한다. 

- 하나 이상의 속성에 적용하고 싶을 때는 쉼표로 나열한다.

  • initial: 속성의 기본값으로 설정해 준다.
  • inherit: 부모요소의 속성값을 상속받는다. 

 

 

 * transition-duration 

- duration: 지속
- transition이 완료되는 데 걸리는 시간을 설정한다.

 

 

 * transition-timing-function 

- 진행 속도를 설정할 수 있다. 

  • ease : 천천히 시작하여 빨라지다가 마지막에 다시 느려진다. 마지막 속도보다 시작 속도가 약간 더 빠르다.
  • linear : 애니메이션의 변화 속도가 처음부터 끝까지 동일하다. (선형)
  • ease-in : 천천히 시작하여 마지막에 속도를 높여 끝난다.
  • ease-out : 빠른 속도에서 시작하여 마지막에 천천히 속도를 줄여 끝난다. 
  • ease-in-out : 천천히 시작되어 정상 속도가 되었다가 마지막에 느려진다.
  • step-start
  • step-end
  • steps(int, start|end)
  • cubic-bezier(n, n, n, n)
  • initial
  • inherit

※ 대부분의 timing 함수들은 cubic bezier를 사용한다. cubic bezier이란 부드러운 곡선을 모델링하기 위해 컴퓨터 그래픽에서 널리 쓰이는 것으로 4개의 컨트롤 포인트를 사용해 transition의 시작과 끝까지 효과를 제어하는 것이다. 

 

 

 * transition-delay 

- delay : 지연 
지연시간을 설정한다. 
- 전환을 얼마만큼 기다렸다가 실행할지 결정해 준다. 
음수 값을 지정할 수 있다. 
※ 음수 값을 지정할 경우 지연 없이 바로 transition이 실행되며 지정해 준 음수값의 절댓값 시간만큼 기다렸다가 시작하게 된다. 

transition: all linear 3s -2s 

/* 효과의 2초 시점부터 바로 적용된다. */

 

 


 

 * animation 

- 여러 스타일을 전환시킬 수 있다. 

- JavaScript 없이 요소에 애니메이션 효과를 적용한다. 

- 애니메이션을 나타내는 CSS 스타일과 애니메이션의 중간 상태를 나타내는 키프레임들로 이루어진다. 

 

 

 * @keyframes 

- 두 개 이상의 애니메이션 중간 상태를 설정한다. 

- 0% 시작점, 100% 종료 시점을 의미한다. (from, to로도 사용할 수 있다.)

/* [ from ~ to 속성 ] */
@keyframes animation-name {
	from {}
	to {}
}

/* [ 0% ~ 100% 속성 ] */
@keyframes animation-name {
	0% {}
	50% {}
	100% {}
}

 

 

 * animation-name 

@keyframes animation-name {}

- animation-name의 시작에는 영문 소문자, 문자열, 언더바(_), 하이픈(-)을 사용한다. 

※ 영문 대문자, 숫자, 특수문자는 사용할 수 없다. (파일 및 폴더명에는 허용된다.)

- 여러 개의 animation-name을 동시에 나열할 경우 쉼표로 구분한다.

 

 

 * animation-duration 

- 애니메이션이 한 사이클을 완료하는 데 걸리는 시간을 지정한다. 

- 음수값으로 설정하면 애니메이션이 실행되지 않는다. 

animation-duration: 0.1s;
animation-duration: 100ms;

 

 

 * animation-timing-function 

- 애니메이션이 진행되는 방식을 설정한다. (속도)

  • ease : 기본값 / 중간으로 갈수록 속도가 증가하고 끝에서 다시 느려진다. 
  • linear : 균일한 속도로 움직인다. 
  • steps(n) : n개의 단계로 움직인다. 

 

 

 * animation-delay 

- 언제 애니메이션이 시작될지 설정한다. 

- 음수값을 지정하게 되면 애니메이션 도중에 시작된다. 

  • 지정한 시간이 지난 뒤의 장면부터 지연 없이 시작된다. 
animation-delay: 3s;
animation-delay: 0s;
animation-delay: -1500ms;

animation-delay: -2s;
/* -2s일 경우 시퀀스 2초부터 시작 */

 

 

 * animation-interation-count 

- 애니메이션 재생 횟수를 설정한다. 

  • infinite : 무한 반복한다. 
  • 0.5 : 절반만 재생한다. 

 

 

 * animation-direction 

- 앞으로, 뒤로 또는 앞뒤로 번갈아 재생되어야 하는지 여부를 설정한다. 

  • normal : 기본값 / 정방향으로 재생한다. 
  • reverse : 역방향으로 재생한다. 
  • alternate : 정방향, 역방향으로 반복한다. 
  • alternate-reverse : 역방향, 정방향으로 반복한다.

 

 

 * animation-fill-mode 

- 실행 전과 후에, 대상에 스타일을 적용하는 방법을 지정한다. 

- 애니메이션이 끝난 후 처음으로 돌아가거나 계속 유지되게 할 수 있다.

  • normal : 기본값 / 스타일을 적용하지 않는다. 
  • forwards : 요소의 기존 스타일로 시작하여 애니메이션의 마지막 속성값을 유지한다. 
  • backwards : 실행되기 전에 애니메이션의 스타일을 미리 적용하고 마지막에는 요소의 기존 스타일로 돌아간다
  • both : 실행되기 전에 애니메이션의 스타일을 미리 적용하고 마지막 값을 유지한다. 

 

 

 * animation-play-state 

- 애니메이션 재생 여부를 설정한다. 

  • paused : 정지 
  • running : 재생 

 

 

 * animation 

- 단축 속성이다. 

animation-name | animation-duration | animation-timing-function | animation-delay | animation-iteration-count | animation-direction | animation-fill-mode | animation-play-state

animation: animation-name 3s ease-in 1s infinite reverse both running ;

✏ 다양한 CSS 애니메이션 참고 블로그

https://medium.com/frontend-canteen/fantastic-css-border-animation-b02e06828beb

 

 


 

 

 

 

 

 

 

 

 

 

 

잘못된 정보에 대한 피드백은 언제든지 환영입니다! 

'dev > HTML + CSS' 카테고리의 다른 글

HTML / CSS - 이미지 확장자 SVG, Canvas  (0) 2023.03.14
HTML - 표(table)  (0) 2023.03.14
CSS - 요소 변형하기 (transform)  (0) 2023.03.13
CSS - 속성 선택자 (attribute selector)  (0) 2023.03.13
CSS - 버튼(button)  (0) 2023.03.13
Comments