CSS 教學

Shopline 3D 產品展示效果 — CSS perspective 實戰

3 分鐘閱讀 · · 2026年7月11日
Shopline 3D 產品展示效果 — CSS perspective 實戰

Shopline 3D 產品展示效果 — CSS perspective 實戰


Shopline 係香港最知名嘅電商平台之一,幫助唔少品牌建立網店。佢哋官網有個好型嘅 3D 產品展示效果——產品圖片或者 mockup 會微微傾斜,呈現出立體感,當你移動滑鼠嗰陣仲會跟住郁,成個感覺好有科技感同高級感。今篇文就同大家拆解呢個效果點做,由基本 3D 傾斜到 mouse parallax 跟隨效果都會覆蓋。


Shopline 網站風格概覽

Shopline 係香港土生土長嘅 SaaS 電商平台,2013 年成立,至今已經服務超過 50 萬個品牌。佢哋官網走專業科技風格,強調「輕鬆開網店」嘅理念。其中一個最吸睛嘅設計元素就係 3D 產品展示——用 CSS 3D transforms 令平面截圖變得有立體感,大大增強視覺衝擊力,令潛在客戶一眼就被吸引。


3D 效果核心原理

CSS 3D transforms 其實係靠三個要素配合:

1. `perspective` — 透視距離

`perspective` 決定咗「相機」離個元素有幾遠。數值越大,3D 效果越淡;數值越小,效果越誇張。一般網站用 `1000px` 到 `1500px` 最自然。

2. `transform-style: preserve-3d` — 保留 3D 空間

呢個屬性確保子元素都處於同一個 3D 空間入面,而唔係被壓扁做 2D。

3. `rotateX()` / `rotateY()` — 旋轉角度

控制元素圍繞 X 軸(上下傾斜)同 Y 軸(左右傾斜)旋轉。Shopline 通常用 `-5deg` 到 `5deg` 嘅微調角度,營造自然嘅立體感。


基本 3D 傾斜效果

最簡單嘅版本,純 CSS 實現:

/* ===== 3D 展示容器 ===== */n.showcase-3d {n  perspective: 1000px;n  perspective-origin: center center;n  display: flex;n  justify-content: center;n  align-items: center;n  min-height: 600px;n  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);n  padding: 40px;n}nn/* ===== 3D 產品卡片 ===== */n.product-card-3d {n  width: 500px;n  transform-style: preserve-3d;n  transform: rotateY(-5deg) rotateX(5deg);n  transition: transform 0.6s ease;n  border-radius: 16px;n  box-shadow: n    20px 20px 60px rgba(0, 0, 0, 0.3),n    -5px -5px 20px rgba(255, 255, 255, 0.1);n}nn/* 滑鼠 hover 時輕微修正角度 */n.product-card-3d:hover {n  transform: rotateY(-2deg) rotateX(2deg) scale(1.02);n}nn/* ===== 產品圖 ===== */n.product-card-3d img {n  width: 100%;n  border-radius: 16px;n  display: block;n}
<!-- HTML 結構 -->n<div class="showcase-3d">n  <div class="product-card-3d">n    <img n      src="shopline-dashboard-mockup.png" n      alt="Shopline 後台介面展示"n    />n  </div>n</div>

代碼逐行解釋

`perspective: 1000px`

設定透視距離為 1000 像素。你可以想像成相機離張相 1 米遠,呢個距離令 3D 效果自然唔誇張。如果改成 `500px`,效果會更強烈;改成 `2000px` 就會幾乎睇唔到 3D 感。

`perspective-origin: center center`

設定透視點喺容器中心。即係用戶「眼睛」正對住個元素中間。你可以改做 `top left` 或者 `bottom right` 創造唔同嘅視角效果。

`transform: rotateY(-5deg) rotateX(5deg)`

  • `rotateY(-5deg)`:向左傾斜 5 度
  • `rotateX(5deg)`:向上微微傾斜 5 度
  • 兩個旋轉配合埋,就做到 Shopline 嗰種「由左上方向右下方望」嘅立體感。

    `transform-style: preserve-3d`

    呢個好重要!如果唔加,子元素(例如張圖片)會被 flatten 做 2D,3D 效果就會消失。

    `box-shadow` 雙層陰影

    底層大範圍陰影模擬深度,上層微弱高光模擬反光,成個立體感即刻出晒嚟。


    進階版:Mouse Parallax 跟隨效果

    基本版已經好靚,但如果想做到 Shopline 官網嗰種「滑鼠移動,產品跟住郁」嘅互動效果,就要加少少 JavaScript:

    /* ===== 3D Parallax 容器 ===== */n.showcase-parallax {n  perspective: 1000px;n  display: flex;n  justify-content: center;n  align-items: center;n  min-height: 700px;n  background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);n  padding: 40px;n  overflow: hidden;n}nn/* ===== 3D 產品卡片(Parallax 版) ===== */n.product-parallax {n  width: 550px;n  transform-style: preserve-3d;n  transition: transform 0.15s ease-out;n  border-radius: 20px;n  box-shadow: n    25px 25px 80px rgba(0, 0, 0, 0.4),n    inset 0 0 0 1px rgba(255, 255, 255, 0.1);n  will-change: transform;n}nn.product-parallax img {n  width: 100%;n  border-radius: 20px;n  display: block;n}
    // ===== Mouse Parallax 效果 =====nconst showcase = document.querySelector('.showcase-parallax');nconst product = document.querySelector('.product-parallax');nnshowcase.addEventListener('mousemove', (e) => {n  // 計算滑鼠喺容器中間嘅相對位置(-1 到 1)n  const rect = showcase.getBoundingClientRect();n  const x = (e.clientX - rect.left) / rect.width;  // 0 ~ 1n  const y = (e.clientY - rect.top) / rect.height;   // 0 ~ 1n  n  // 轉換做 -1 到 1 嘅範圍n  const centerX = (x - 0.5) * 2;n  const centerY = (y - 0.5) * 2;n  n  // 計算旋轉角度(最大 ±15 度)n  const rotateY = centerX * 15;   // 左右移動控制 Y 軸旋轉n  const rotateX = -centerY * 15;  // 上下移動控制 X 軸旋轉(負號反轉方向)n  n  // 應用變換n  product.style.transform = `n    rotateY(${rotateY}deg) n    rotateX(${rotateX}deg)n  `;n});nn// 滑鼠離開時歸位nshowcase.addEventListener('mouseleave', () => {n  product.style.transform = 'rotateY(0deg) rotateX(0deg)';n});

    Parallax 代碼解釋

    計算相對位置

    x = (滑鼠 X 座標 - 容器左邊) / 容器寬度

    呢個公式將滑鼠位置轉換做 0 到 1 之間嘅值。再用 `(x – 0.5) * 2` 轉換做 -1 到 1,方便後續計算。

    角度映射

    `centerX * 15` 嘅意思係:

  • 滑鼠喺最左邊(-1)→ 旋轉 -15 度
  • 滑鼠喺中間(0)→ 旋轉 0 度
  • 滑鼠喺最右邊(1)→ 旋轉 15 度
  • 你可以調整個 `15` 數值控制效果強度。

    `transition: transform 0.15s ease-out`

    用短促嘅 transition 令移動有少少慣性感,唔會太生硬。如果用 `0s` 會好機械化,用 `0.5s` 以上就會太lag。

    `will-change: transform`

    提示瀏覽器呢個元素會經常改變 transform,瀏覽器會預先做優化,令動畫更流暢。


    多層 Parallax 效果

    想效果更立體?可以做多層元素,每層移動速度唔同:

    .product-layer {n  transform-style: preserve-3d;n  transition: transform 0.15s ease-out;n}nn.layer-back {n  transform: translateZ(-50px);n}nn.layer-front {n  transform: translateZ(50px);n}
    // 多層移動,每層強度唔同nconst layers = document.querySelectorAll('.product-layer');nconst depths = [-30, 0, 30]; // 每層 Z 軸深度nnshowcase.addEventListener('mousemove', (e) => {n  const rect = showcase.getBoundingClientRect();n  const centerX = ((e.clientX - rect.left) / rect.width - 0.5) * 2;n  const centerY = ((e.clientY - rect.top) / rect.height - 0.5) * 2;n  n  layers.forEach((layer, index) => {n    const depth = depths[index] || 0;n    const intensity = 0.5 + (index * 0.3);n    n    layer.style.transform = `n      translateZ(${depth}px)n      rotateY(${centerX * 10 * intensity}deg)n      rotateX(${-centerY * 10 * intensity}deg)n    `;n  });n});

    應用場景

    呢個 3D 效果除咗 Shopline 產品展示之外,仲可以用喺好多地方:

  • **電商產品展示** — 令商品截圖更有質感同立體感
  • **卡片效果** — 會員卡、價格表、功能介紹卡嘅 hover 效果
  • **Hero 區域** — 首頁大圖區域加 3D 感,提升第一印象
  • **App 截圖展示** — 手機 mockup 用 3D 角度展示更有吸引力
  • **Portfolio 作品展示** — 設計師作品集用 3D 效果展示作品縮圖

  • 小貼士

    1. **角度唔好太大** — 建議維持喺 ±15 度之內,太大會令用戶眼花
    2. **圖片要高清** — 3D 效果會令用戶更留意張圖,低解像度會好扣分
    3. **加 `will-change`** — 動畫元素加 `will-change: transform` 可以提升效能
    4. **手機版要關閉** — 手機冇 mousemove 事件,建議用 gyroscope 或者索性關閉 parallax
    5. **唔好濫用** — 一頁放一個 3D 效果就夠,太多會令用戶頭暈


    手機版處理

    手機冇滑鼠,可以咁處理:

    /* 手機版關閉 parallax,用靜態 3D */n@media (max-width: 768px) {n  .product-parallax {n    transform: rotateY(-3deg) rotateX(3deg) !important;n    /* !important 覆蓋 JS 動態設定 */n  }n}

    或者如果你有時間,可以用 DeviceOrientation API 實現手機陀螺儀版本,手機傾斜時產品跟住郁——效果超級型!


    結語

    Shopline 嘅 3D 產品展示效果係 CSS 3D transforms 嘅絕佳示範。核心就係 `perspective` + `rotateX`/`rotateY` 呢個組合,配合埋 `preserve-3d` 保留立體空間。進階啲加埋 JavaScript mouse parallax,就可以做到互動性極強嘅效果。

    呢個技巧學識咗之後,你可以喺任何產品頁、landing page 或者 portfolio 度用,絕對可以提升視覺質感。

    如果你覺得有用,歡迎分享俾朋友!有任何問題都可以留言問我哋。


    關於 TrendyOnly

    TrendyOnly 專注於分析香港同亞洲地區最靚、最有特色嘅網站設計,從中拆解值得學習嘅 UI/UX 技巧,用淺白廣東話分享俾大家。無論你係設計師、開發者,定係純粹對網站設計有興趣,都歡迎 bookmark 我哋定時嚟睇新文章。


    **分享出去:**
    覺得呢篇文章幫到你?Share 俾你嘅設計師/開發者朋友,一齊學習進步!