前言
CSS transform 屬性是一個強大的工具,可以用來對 HTML 元素進行旋轉、縮放、移動及傾斜等變換,而不會影響其他元素的佈局。這使得 transform 非常適合用來建立動畫效果、視覺調整以及 UI 微調。
1. transform 基礎概念
transform 屬性可以接受一個或多個變換函數,使元素在不影響文檔流的情況下進行變換。這些變換主要包含:
- 平移 (translate)
- 縮放 (scale)
- 旋轉 (rotate)
- 傾斜 (skew)
- 矩陣變換 (matrix)
2. transform 常見屬性
2.1 平移 (translate)
translate(x, y) 用於移動元素的 X 軸與 Y 軸位置。
.box { |
此範例將 .box 元素向右移動 50px,向下移動 100px。
單軸平移
translateX(50px):僅在 X 軸移動 50px。translateY(100px):僅在 Y 軸移動 100px。
2.2 縮放 (scale)
scale(x, y) 用於縮放元素。
.box { |
此範例將 .box 元素的寬度放大 1.5 倍,高度縮小為原來的一半。
單軸縮放
scaleX(2):寬度變為 2 倍。scaleY(0.5):高度變為 0.5 倍。
2.3 旋轉 (rotate)
rotate(angle) 用於旋轉元素。
.box { |
此範例將 .box 元素順時針旋轉 45 度。
2.4 傾斜 (skew)
skew(x-angle, y-angle) 用於使元素傾斜。
.box { |
此範例將 .box 在 X 軸方向傾斜 30 度,在 Y 軸方向傾斜 10 度。
單軸傾斜
skewX(15deg):僅在 X 軸傾斜 15 度。skewY(25deg):僅在 Y 軸傾斜 25 度。
2.5 矩陣變換 (matrix)
matrix(a, b, c, d, e, f) 是一個綜合性變換函數,允許透過 6 個參數來同時應用縮放、旋轉、傾斜與位移。
.box { |
這樣的矩陣表示:
1:X 軸縮放。0.5:X 軸傾斜。0.5:Y 軸傾斜。1:Y 軸縮放。50:X 軸位移。100:Y 軸位移。
3. transform 的應用範例
3.1 建立簡單的 hover 效果
利用 transform,可以輕鬆製作滑鼠懸停的動畫效果,例如按鈕放大效果:
.button { |
3.2 圖片翻轉效果
使用 rotateY(180deg) 來製作翻轉效果,常用於卡片翻轉動畫。
.card { |
3.3 旋轉動畫
結合 @keyframes 和 transform,可以製作無限旋轉動畫。
@keyframes spin { |
4. transform-origin 的應用
transform-origin 屬性用於指定變換的基準點,預設值為 50% 50%(元素中心)。
.box { |
此範例中,元素將以左上角為旋轉點,而非默認的中心點。
5. perspective 與 3D 變換
當使用 3D 變換(如 rotateX、rotateY)時,可使用 perspective 來模擬景深效果。
.container { |
此範例讓 .box 具有 3D 透視效果,使其看起來更真實。
6. 總結
CSS transform 是一個靈活且強大的屬性,可以用來製作動畫、視覺調整及增強 UI 體驗。透過 translate、scale、rotate、skew 等函數,你可以輕鬆地操控元素的外觀,讓你的網頁更具吸引力。