Skip to content

2026-02-27

/ 7 分鐘閱讀

/ Advanced Web Dev Quiz

CSS Render Layer ​

此文章是 FrontendMaster 上的 Advanced Web Development Quiz 課程筆記

問題 ​

Which of the following properties causes the element to be promoted to its own RenderLayer?

Select all the correct answers.

[1] z-index: 1
[2] translate3d: (0, 0, 0)
[3] will-change: transform
[4] transform: rotate(45deg)
[5] position: fixed
[6] position: absolute

為什麼會有 Layer? ​

  • 瀏覽器大致的呈現畫面的流程是:layout > paint > compositing (把各個 Layer 拼起來)
  • 而這個 Render Layer 就是瀏覽器把元素分離成獨立的 Layer,之後若有位置、透明度...等變化時,可以只在 compositing 階段完成即可,不需要重新計算 layout、paint,這樣子就可以跳過前兩個步驟來降低成本

需要注意的是,每多一層 Layer,就多一份記憶體與管理成本,所以還是不能濫用

常見會建立自己 Layer 的 CSS 屬性/值 ​

不同的瀏覽器與版本可能會有不同的結果

  • 3D / transform 相關:translate3d(...)、translateZ(0) 這類 3D transform 常被用來「強制」為元素建立到新的 Layer,一般 transform(例如 rotate(...))也常觸發。

  • position: fixed:它常促使獨立 Layer,理由是 fixed 元素要相對視窗固定,若每次 scroll 都重 paint 畫面會很不順暢。

  • will-change:will-change: transform、will-change: opacity 是告訴瀏覽器「等等會改這些」,用來提前告訴瀏覽要建立 Layer 的屬性。

  • 視覺效果:opacity、filter(這兩個屬性只能在 compositing 處理,如果有相關的動畫依靠這些屬性,可以直接為這些元素加上 will-change)

  • backface-visibility: hidden、video 元素、以及 WebGL canvas

需要注意的是 z-index、position: absolute 都不會建立出新的 Layer

答案 ​

[2] translate3d: (0, 0, 0)
[3] will-change: transform
[4] transform: rotate(45deg)
[5] position: fixed

參考 ​

最後更新時間:

Buy Me A Coffee

系列章節 第 25 篇 / 共 27 篇

0 %
MIT Licensed | Copyright © 2025-present Wen-Hsiu's Blog
Photo by Federica Galli on Unsplash