# 認識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)