translate3d()
是 CSS3 中的一個轉換函式,用於在 3D 空間中移動元素。它接受三個引數,分別表示在 x、y 和 z 軸上的位移量。
作用:
-
3D 變換:
translate3d()
使元素在 3D 空間中移動,而不是像translate()
或translateX()
/translateY()
那樣在 2D 平面內移動。 這開啟了使用其他 3D 變換函式(例如rotate3d()
、scale3d()
)以及 3D 透視效果的大門。 -
硬體加速: 使用
translate3d()
通常會觸發 GPU 硬體加速,從而使動畫和過渡更加平滑,尤其是在移動裝置上。 這是它最大的優勢之一,可以顯著提高效能,避免動畫卡頓。 瀏覽器會將使用了 3D 變換的元素渲染到一個獨立的合成層,從而利用 GPU 的能力進行處理。 -
更精細的控制:
translate3d()
允許你控制元素在 z 軸上的位置,這對於建立更復雜的 3D 效果至關重要,例如視差滾動或元素的層疊。 -
與其他 3D 變換函式結合:
translate3d()
可以與其他 3D 變換函式結合使用,建立更豐富的 3D 效果。
語法:
transform: translate3d(tx, ty, tz);
tx
: 沿 x 軸的位移量。正值向右移動,負值向左移動。ty
: 沿 y 軸的位移量。正值向下移動,負值向上移動。tz
: 沿 z 軸的位移量。正值向螢幕外移動(遠離使用者),負值向螢幕內移動(靠近使用者)。
單位:
位移量可以使用任何 CSS 長度單位,例如畫素 (px)、百分比 (%)、em 等。 tz
值即使為 0,也會觸發硬體加速。
示例:
.element {
transform: translate3d(10px, 20px, 30px); /* 向右移動 10px,向下移動 20px,向螢幕外移動 30px */
}
.element {
transform: translate3d(0, 0, 100px); /* 只在 z 軸上移動,用於建立層疊效果 */
/* 需要配合 perspective 屬性才能看到效果 */
}
注意事項:
- 雖然
translate3d(0, 0, 0)
也能觸發硬體加速,但過度使用可能會導致效能問題,因此應謹慎使用。 只在需要最佳化動畫效能時才使用它。 - 使用 3D 變換需要理解透視 (
perspective
) 和變換原點 (transform-origin
) 等概念,才能達到預期的效果。
總而言之,translate3d()
的主要優勢在於其硬體加速能力,可以顯著提升動畫效能。 在處理複雜的動畫或需要 3D 效果時,它是一個非常有用的工具。