cat
CS/기타

CSS 애니메이션과 Javascript 애니메이션의 차이?

2023. 4. 6. 06:04
목차
  1. CSS 애니메이션
  2. Javascript 애니메이션

CSS에서의 애니메이션 사용

transition/animation 속성

Javascript의 애니메이션 사용

requestAnimationFrame()

 

 

CSS 애니메이션

간단하게 처리하는 애니메이션의 경우 CSS로 처리한다.

CSS 애니메이션의 장점

  • 반응형으로 애니메이션을 구현하기 좋다.
    • 미디어 쿼리를 이용하여 해당경우에 맞춰 스타일링을 해주면 되기 때문.
  • 외부 라이브러리를 필요로 하지 않다.
    • 나는 라이브러리를 가져오는 것을 별로 선호하지 않기 때문에 메리트가 있다.
  • 메인 스레드가 아닌 별도의 컴포지터 스레드에서 그려지기 때문에 메인스레드에서 작업하는 JS보다 효율적이다.

좀 더 나아가서 최적화에 대한 고민을 한다면, CSS 애니메이션에 대해서 최적화를 고려해볼 수 있다.

브라우저 렌더링 관점에서 Javascript로 애니메이션을 구현했다면 reflow와 repaint는 피할 수 없을 것이다.

그렇다면 reflow를 일으키는 CSS속성은 무엇이고, repaint를 일으키는 CSS속성은 무엇일까?

 

우리의 목적은 repaint만 일어나거나 둘 다 일어나지 않는 게 목적이다.

 

reflow, repaint가 일어나는 대표적인 속성은 다음과 같다.

그리고 둘 다 일어나지 않는 속성은

transform, opacity 정도가 있다.

Javascript 애니메이션

JavaScript의 애니메이션은 CSS로 처리하기에는 훨씬 복잡하고 무거운 애니메이션을 다룬다.

JavaScript의 애니메이션은 이를 더 효율적이고 세밀하게 다룰 수 있다.

 

바닐라 자바스크립트로 구현할 경우 위에서 설명했듯이 계속해서 요소의 위치를 재계산하기 때문에 비효율적이며 사용자 눈에 가장 부드러운 60 fps가 유지되지 않는다.

이 때문에 RAF(RequestAnimationFrame) API가 등장했고 동일한 구현 방식으로 60 fps를 보장할 수 있게 되었다.

 

JavaScript 애니메이션의 장점은 다음과 같다.

  • 요소의 스타일이 변하는 순간마다 제어할 수 있기 때문에 세밀한 구성이 가능하다.
  • GPU를 통한 하드웨어 가속을 제어할 수 있다.
    • 이는 CSS의 특정 속성으로 인한 가속을 막아준다.
    • 따라서 모바일에서의 성능 저하를 막을 수 있다.
  • 브라우저 호환성 측면에서 CSS보다 뛰어나다.

 

 

 

 

 

'CS > 기타' 카테고리의 다른 글

자바스크립트에서 Event Loop란?  (0) 2023.05.13
서버(Server)란 무엇일까?  (0) 2023.05.01
자바스크립트(Javascript) 비동기의 역사  (0) 2023.04.06
클로저(Closure)란?  (0) 2023.04.05
이벤트 루프(Event Loop)란?  (0) 2023.04.05
  1. CSS 애니메이션
  2. Javascript 애니메이션
'CS/기타' 카테고리의 다른 글
  • 서버(Server)란 무엇일까?
  • 자바스크립트(Javascript) 비동기의 역사
  • 클로저(Closure)란?
  • 이벤트 루프(Event Loop)란?
여행 가고싶다
여행 가고싶다
여행 가고싶다
blanc
여행 가고싶다
전체
오늘
어제
  • 분류 전체보기 (43)
    • 토이프로젝트 (13)
      • 프론트엔드 인턴쉽 (5)
      • ProjectSassy (4)
      • LinkArchive (4)
    • FrontEnd (11)
      • React (6)
      • JavaScript (1)
      • TypeScript (1)
      • CSS (0)
      • Test (2)
    • CS (0)
      • Network (4)
      • 기타 (8)
    • 재미 (3)
    • AWS (2)
    • Git (1)
    • 클린코드 (1)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
여행 가고싶다
CSS 애니메이션과 Javascript 애니메이션의 차이?
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.