웹 사이트에 애니메이션 효과를 줄 때, CSS의 transition
, animation
속성을 사용할 수 있고,
JS의 setInterval()
, requestAnimationFrame()
을 사용할 수 있다.
각각 사용할 때 장단점이 있고 특징이 다르다. 어떤 차이가 있는지 알아보자
transform:translate(X, Y)
사용하여 구현setInterval()
으로 계속해서 style.top
, style.left
속성 변화하여 구현 ❓ 미디어 쿼리(Media Query)
CSS에서 어떤 스타일을 선택적으로 적용하고 싶을 때 사용
❓ 컴포지터 쓰레드(Compositor Thread)
기본적으로 브라우저의 모든 컨텐츠들은 메인 스레드에서만 처리(JS → Recalc Style → Layout → Update Layout Tree → Paint → Composite)
브라우저는 구조적으로 싱글 코어만 사용할 수 있는 디자인으로 설계되었으나, 크로미움 오픈소스 기반으로 해당 문제 해결하여 컴포지터 분리. 스크롤링을 컴포지터 스레드에서 처리 가능
Velocity.js
와 GSAP
같은 라이브러리를 통해서 성능 좋은 애니메이션 구현transition
, animation
속성보다 뛰어남References:
https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/frontend/css-js-animation.md
https://www.daleseo.com/css-media-queries/
https://evanjin.oopy.io/optimize/browser-reference