https://wit.nts-corp.com/2020/06/05/6134
본 문서는 원작자의 동의를 얻어 원문의 의미를 해치지 않도록 번역하였으며, 이해를 돕기 위한 Chrome DevTools 활용 방법을 추가했습니다.
웹 페이지에서 애니메이션을 어떻게 구현하고 계신가요?
JavaScript animation? CSS animation?
라이브러리를 활용해 JavaScript 애니메이션을 구현할 수 있지만, 현재의 native CSS도 다양한 애니메이션을 구현할 수 있습니다. 그 중 성능 향상에 도움되는 CSS 애니메이션 구현 방식을 소개합니다.
CSS 애니메이션은 일부 속성에 의존합니다.
애니메이션의 속성이 다른 두 개의 테스트 결과를 살펴봤습니다.
레이블이 없었더라면 차이를 전혀 못느꼈을 거에요. 이 결과를 보면, 다른 방식이지만 보여지는 것은 동일하다는 것을 알 수 있죠. 하지만 Chrome의 DevTools로 측정을 해보면 특별한 차이를 발견할 수 있습니다.
성능 측정 결과의 이해를 돕기 위해, 웹 브라우저의 렌더링 방식을 간단히 살펴보겠습니다. 웹 브라우저는 UI를 다음과 같은 방식으로 생성합니다.
Composite Layers 생성은 CPU가 애니메이션을 처리하기 위해 GPU와 통신하는 단계입니다.transform, opacity와 같은 속성을 사용하면, CPU 대신 GPU를 사용해 웹 브라우저가 애니메이션을 수행할 수 있도록 할 수 있습니다.