在前端開發中,translate()
方法是 CSS transform
屬性的一個函式,用於在二維平面上移動元素。它改變元素的位置,使其在水平方向(X 軸)和/或垂直方向(Y 軸)上平移。
以下是 translate()
方法的關鍵特性和用法:
-
二維平移:
translate()
使元素在 X 軸和 Y 軸上移動,建立一個平移效果。它不會影響元素的旋轉、縮放或其他變換屬性。 -
語法:
translate(tx, ty)
或translate(tx)
。tx
:表示水平方向的平移量,可以是長度值(例如畫素、百分比、em)或calc()
表示式。正值向右移動,負值向左移動。ty
:表示垂直方向的平移量,同樣可以是長度值或calc()
表示式。正值向下移動,負值向上移動。- 如果只提供一個值
translate(tx)
,則等同於translate(tx, 0)
,即只在水平方向平移。
-
單位: 可以使用各種 CSS 長度單位,例如畫素 (px)、百分比 (%)、em、rem 等。百分比值是相對於元素自身大小計算的。
-
transform 屬性:
translate()
必須作為transform
屬性的值使用。 -
與其他變換函式結合: 可以與其他變換函式(如
rotate()
、scale()
、skew()
)結合使用,建立更復雜的動畫和效果。 變換函式的應用順序會影響最終結果。 -
效能:
translate()
通常被認為是效能較好的變換函式,因為它不會觸發重排(reflow),只會觸發重繪(repaint)。 這使得它成為動畫的理想選擇。 -
translate3d(): 雖然
translate()
進行二維平移,但還有一個translate3d()
函式,它增加了第三個維度 (z 軸)。 儘管在二維變換中z
值通常為 0,但使用translate3d()
可以利用 GPU 硬體加速,從而提高動畫效能,尤其是在移動裝置上。
示例:
.element {
transform: translate(50px, 100px); /* 向右移動 50px,向下移動 100px */
}
.another-element {
transform: translate(-20px); /* 向左移動 20px */
}
.percentage-translate {
width: 200px;
height: 100px;
transform: translate(50%, 25%); /* 向右移動自身寬度的 50% (100px),向下移動自身高度的 25% (25px) */
}
.combined-transform {
transform: translate(50px, 50px) rotate(45deg); /* 先平移,再旋轉 */
}
總結:
translate()
方法是前端開發中一個非常實用且高效的 CSS 變換函式,用於在二維平面上移動元素。 理解其語法、單位和與其他變換函式的組合使用,可以幫助開發者建立各種動態和互動式的網頁效果。 為了獲得最佳效能,尤其是在動畫中,可以考慮使用 translate3d()
。