---
# System prepended metadata

title: 認識CSS#13 Transform
tags: [CSS]

---

# 認識CSS#13 Transform
###### tags: `CSS`

## Transform 

transform 可以讓 html 元素(包含內容)被位移、旋轉、縮放和傾斜

## Transform 屬性

| 屬性 | 說明 |
| -------- | -------- |
| transform-origin | 物件變行的起始點 |
| translate | 物件進行X軸或Y軸的移動 |
| skew | 物件進行X軸或Y軸以某個角度進行傾斜 |
| rotate | 物件進行正時針方向或逆時針方向的旋轉動作 |
| scale | 物件根據大小比例進行放大或縮小 |

## transform-origin

### 語法

```=CSS
transform-origin: 100px 20px; 
/* x、y可為尺寸值 或 % (百分比) 或方位關鍵字；% 是以元素本身大小作為計算基準。*/

transform-origin: left top;
/* 可使用方位 center,top,right,bottom,left ，如果沒寫預設為 center */

```

這個屬性可以改變物件變形的基準點，也就是說可以決定物件要從哪裡變形
預設的變形基準點是<font color='red'>物件的中心點 50%,50% </font>

<font color='red'>注意變形起始點是在元素中定義，而不是:hover裡:</font>

### [範例 left bottom 當起點旋轉80度](https://codepen.io/binlandz123/pen/ZErdgqB)

## translate

### 語法

```=CSS
transform: translate(25px, 25px);
/* ( X軸, Y軸)，除了固定長度單位也可以用 % ， 如果用 % 是以物件大小為計算基準 ，如果第二個參數不寫預設為 0*/

transform: translateX(25px);
/* X軸平移，可以用固定長度單位也可以用 % */

transform: translateY(25px);
/* Y軸平移，可以用固定長度單位也可以用 % */
```

這個屬性可以讓物件 X 軸, Y 軸平移，值可以使用 CSS 中的正負長度數值(px, em, in)，或是 %

### [translate 範例](https://codepen.io/binlandz123/pen/dydBxaj)

## skew

### 語法

```=CSS
 transform:skew(20deg, 10deg); 
 /* ( X軸, Y軸)，單位使用 deg*/
 
 transform:skewX(10deg); 
 /* X軸傾斜，單位使用 deg*/
 
 transform:skewY(10deg); 
  /* Y軸傾斜，單位使用 deg*/
```

這個屬性可以讓物件進行 X 軸或 Y 軸以某個角度進行傾斜，角度也是使用正負數後面加上deg來代表

### [skew 範例](https://codepen.io/binlandz123/pen/jOZgNYw)

## rotate

### 語法

```=CSS
transform:rotate(20deg); 
/* 單位：deg，正值=順時針旋轉，負值=逆時針旋轉 */
```

這個屬性是將物件進行正時針方向或逆時針方向的旋轉動作，超過360度代表轉過一圈再繼續旋轉

### [rotate 範例](https://codepen.io/binlandz123/pen/poaMzOp)


## scale	

### 語法

```=CSS
 transform:scale(0.5);
 /* 根據提供的數字值進行放大或縮小，沒有單位，2代表2倍大，0.5代表一半大小 */
 
 transform:scaleX(0.5);
 /* X 軸縮放 */
 
 transform:scaleY(0.5); 
 /* Y 軸縮放 */
```

這個屬性是對大小比例進行放大或縮小，數值為正數

### [scale 範例](https://codepen.io/binlandz123/pen/NWyQKog)