브라우저에서 웹 사이트를 꾸미는 것에 있어서 우리는 각자 다양한 방식으로 많은 스타일 속성들을 사용하여 꾸미게 됩니다.
그런 상황에서도 브라우저 렌더링을 최소화 할 수 있고 Reflow를 아예 안할 수 있는 속성들이 있어 소개드리려고 합니다.
기본적으로 브라우저 렌더링 상황에서는
Javscript > Style > Layout > Paint > Composite 순서를 따르게 됩니다.
Layout(Reflow)단계를 뛰어넘게 되면 연산하는 양이 줄어들기 때문에 렌더링이 개선됩니다.
Reflow가 일어나는 속성들
position | width | height | left | top |
right | bottom | margin | padding | border |
border-width | clear | display | float | font-family |
font-size | font-weight | line-height | min-height | overflow |
text-align | vertical-align | white-space | ... |
Repaint만 일어나는 속성들
background | background-image | background-position | background-size | background-repeat |
border-radius | border-style | box-shadow | color | line-style |
outline | outline-color | outline-style | outline-width | text-decoration |
visibility | .... |
위에서 주의깊게 보시면 확인할 수 있는 사실은 border 같은 경우 outline과 달리 reflow가 발생하며 우리가 trasnform이나 animation으로 엘리먼트에 변화를 줄 때 border를 재할당 하는 것 보다 필요한 부분만 업데이트하는 것이 훨씬 더 이익이라는 것입니다.
위와 같이 Reflow만을 피해서 렌더링 최적화를 이룰 수도 있겠지만 Repaint 조차 하지 않아도 되는 속성들이 있습니다.
transform, opacity, cursor, orphans, perspective등이 있을 수 있겠는데요.
앞서, 언급했던 각 레이아웃 렌더링 단계에서 Layout과 Paint를 건너뛰게 되므로 매우 렌더링 속도에 대한 이득을 많이 볼 수 있습니다.
이상입니다.
'CSS' 카테고리의 다른 글
CSS 마스터를 위한 15가지 기법 (0) | 2021.02.21 |
---|---|
Grid로 가장자리 색상바를 만드는 방법 (0) | 2021.02.21 |
다크모드에 대한 가이드 (메일폼 등) (0) | 2021.02.15 |
CSSOM이란? (브라우저 렌더링 과정에 대하여) (0) | 2021.02.14 |
Sass 와 새로운 CSS 기능의 충돌! (0) | 2021.02.12 |
댓글