일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- const 단언문
- click and drag
- 누구나 자료구조와 알고리즘
- 제네릭
- JS console
- React Native
- 성능최적화
- returnType
- React.js
- NonNullable
- 레이아웃쪼개기
- 커스텀
- 공통컴포넌트
- utilty type
- javascript
- reactjs
- 타입스크립트
- 2022
- 개발콘텐츠
- react
- 티스토리꾸미기
- CSS
- 타입좁히기
- 폰트적용하기
- TSDoc
- Chart.js
- 반복줄이기
- typescript
- vue.js
- 리액트
- Today
- Total
몽땅뚝딱 개발자
성능 최적화하기 - (3) 애니메이션 최적화 본문
◽ 애니메이션이 왜 버벅일까?
주사율은 초당 60frame이다. 브라우저도 그에 맞춰서 화면을 렌더링하려고 한다.
애니메이션이 버벅이는 이유는 초당 60frame의 화면을 그리지 못하기 때문이다. (=쟁크현상)
◽ 화면이 그려지는 과정
DOM + CSSOM > Render Tree > Layout > Paint > *Composite
* Composite: 각 레이어를 합성하는 과정이다.
만약 완성된 화면에서 일부 스타일이 바뀐다면 브라우저는 화면을 이 과정을 다시 거친다.
이를 Reflow라고 하는데 비용이 많이 드는 Layout, Paint 과정을 건너뛰어야 성능이 좋아진다.
- width나 height를 변경하는 경우: Reflow (5단계를 모두 재실행)
- color, background-color를 변경하는 경우: Repaint (Layout 단계를 제외한 4단계를 재실행)
◽ Reflow와 Repaint를 일으키는 속성
Reflow: position, width, heigth, left, top, right, bottom, margin, padding, border, border-width, display, flaot, font-family, font-size, font-weight, line-height, overflow, text-align, vertical-align ...
Repaint: background, background-image, background-position. background-repeat, background-size, border-radius, border-style, box-shadow, color, line-style, text-decoration, outline, outline-color ...
◽ 애니메이션 최적화
GPU의 도움을 받는 것으로, GPU가 관여할 수 있는 속성인 transform, opacity 속성을 사용한다.
Layout, Paint 과정을 생략(=Reflow와 Repaint를 생략)한다.
[transform 속성]
https://developer.mozilla.org/ko/docs/Web/CSS/transform
출처
'Development > 성능최적화' 카테고리의 다른 글
성능 최적화하기 - (6) 코드 스플리팅(Code Spliting) (0) | 2022.05.27 |
---|---|
성능 최적화하기 - (5) 프리로딩(Preloading) (0) | 2022.05.27 |
성능 최적화하기 - (4) Component Lazy Loading (0) | 2022.05.27 |
성능 최적화하기 - (2) 이미지 최적화 (0) | 2022.05.27 |
성능 최적화하기 - (1) 개발자 도구의 활용 (0) | 2022.05.27 |