<div style="transform:translateZ(0);"></div>
위와 같은 흔히 알고 있는 CSS style에 3d를 붙여주면
<div style="transform:translate3d(0,0,0);"></div>
GPU 가속을 활성화시킬 수 있다고 한다. 그러나, GPU 가속을 사용하면 웹 페이지의 렌더링 속도가 빨라지긴 하지만(CPU 대신 GPU를 써서 역할을 분담하므로), 사용을 남발하면 오히려 렌더링 속도가 느려지거나 브라우저에 문제가 일어날 수 있다(당연한 소리지만 유의).
will-change: transform, opacity;
위와 같이 브라우저에게 이 부분은 바뀔 것이다 라고 언지를 주는식으로 최적화를 할 수 있다(이 때, Height은 먹히지 않는다고 한다). will-change가 레이어핵(말그대로 핵처럼 불필요한 비용을 써서 브라우저에게 억지로 생성시키는 것)보다 효율적이라고 한다. 그러나 이러한 will-change도 모든 것에 적용하면 오히려 메모리 낭비를 초래하기 때문에 꼭 필요한 부분에 선택적으로 적용하도록 한다.
** 하지만, 상황에 따라 변경이 완료된 이후 제거하지 않고 유지하는 것이 필요할 때도 있다.
위의 경우는 항상 혹은 정기적으로 변화하기 때문에 최적화도 유지될 필요가 있다.
이때는 will-change 속성을 매번 제거하고 다시 설정하는 것보다 제거하지 않고, 계속 유지하는 것이 더 나은 성능을 얻을 수 있다.
** 예시
.side-bar {
will-change: transform;
}
.NamePlate {
will-change: left, top;
}