Skip to content

CSS 變形基準點 transform-origin:決定變形的中心

CSS 變形基準點 transform-origin:決定變形的中心

transform-origin 是 CSS 中用來設定元素的變形基準點的屬性。當您對元素使用了 transform 中的旋轉、縮放、傾斜等,這個設定可以決定變形的基準點。

css
transform-origin: X軸 Y軸 Z軸 ;
  • X 軸: 定義水平軸上的基準點位置,可用數字與單位來表述,亦可用關鍵字來表述。
    • 20px50%: 自定義水平位置。
    • left: 左緣處。
    • center: 水平置中。
    • right: 右緣處。
  • Y 軸: 定義水平軸上的基準點位置,可用數字與單位來表述,亦可用關鍵字來表述。
    • 20px50%: 自定義垂直位置。
    • top: 上緣處。
    • center: 垂直置中。
    • bottom: 下緣處。
  • Z 軸(可選): 定義 Z 軸上的基準點位置,通常用於 3D 變形。

基準點不同,結果完全不同

css
/* 繞中心轉(預設) */
.a { transform-origin: center; transform: rotate(45deg); }

/* 繞左上角轉,像被釘住的一角 */
.b { transform-origin: top left; transform: rotate(45deg); }

/* 從底部往上長出來 */
.c { transform-origin: bottom; transform: scaleY(0); }

第三個例子常用來做下拉選單展開的動畫,搭配 轉場 就有從上方展開的效果。

小提醒

基準點只影響 旋轉、縮放與傾斜;平移是整體位移,換基準點不會有任何差別。

常見問題

預設的基準點在哪裡?

元素的正中央,也就是 50% 50%。因此預設的旋轉是繞著中心轉。

它會影響平移嗎?

不會。基準點只影響旋轉、縮放與傾斜;平移是整體位移,換基準點不會有任何差別。

第三個值什麼時候用得到?

只有 3D 變形 才用得到,它決定基準點在縱深方向的位置。這個值只能用長度,不能用百分比。

可以用關鍵字混合數值嗎?

可以,例如:水平用關鍵字、垂直用百分比。只寫一個值時,第二個值會被視為置中。

延伸閱讀