行銷展示區塊

Depth Mask Hero

鎖屏景深主視覺:去背主體局部遮擋大字標題,捲動時主體、標題與背景以不同速率分離產生真實深度。

把這個效果裝進你的專案

在專案資料夾執行指令,CLI 會加入原始碼與依賴套件,再依下方使用範例引用元件。

npx webberui@latest add depth-mask-hero

還沒有專案,或安裝遇到問題?看快速開始 →

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

1
20
編輯中的呼叫預設屬性
<DepthMaskHero/>

完整範例包含預覽的排版與資料。先安裝元件,再把範例檔貼入你的專案。

安裝

npx webberui@latest add https://webberui.com/r/depth-mask-hero.json

或在 components.json 設定 registries 後,改用 @webberui/depth-mask-hero 安裝。

使用

import { DepthMaskHero } from "@/components/ui/depth-mask-hero";

<DepthMaskHero
  title="OUTSIDE"
  kicker="夏季特輯"
  date="7月13日 週一"
  time="9:41"
  subject="/people/hiker.png"
  subjectAlt="登山者"
>
  <section className="px-6 py-16">內文從這裡開始…</section>
</DepthMaskHero>

未提供 subject 時會渲染內建的中性色人像剪影,因此無外部素材也能直接展示遮罩構圖。主視覺以 position: sticky 吸頂,捲動穿越後才把 children 內文遞補上來;若放在巢狀 overflow 容器內捲動,記得把該容器的 ref 傳入 container。

Props

Prop型別預設值說明
titleReact.ReactNode—主標題,大字級、被主體局部遮擋
titleAs"h1" | "h2" | "h3""h1"主標題的語意標籤,避免與頁面標題衝突
kickerReact.ReactNode—眉題(小標),顯示於主標題上方
subjectstring—去背主體圖 URL(建議透明 PNG)
subjectAltstring—主體替代文字;未提供時視為裝飾
backgroundstring—背景圖 URL;未提供時以中性色漸層填底
timeReact.ReactNode—鎖屏時間文字,例如 "9:41"
dateReact.ReactNode—鎖屏日期文字,顯示於時間上方
heightstring"100svh"主視覺面板高度(任意 CSS 長度)
scrollDistancestring"80vh"深度分離所需的額外捲動距離
stickyTopnumber0面板吸頂位置(px)
depthnumber1各層深度分離的位移倍率,越大分層越明顯
pointerParallaxbooleantrue是否啟用滑鼠視差
parallaxStrengthnumber20滑鼠視差的最大位移量(px)
springConfigSpringOptions{ stiffness: 140, damping: 20, mass: 0.4 }視差回彈的 spring 參數
containerReact.RefObject<HTMLElement | null>—巢狀捲動容器的 ref;預設以視窗為捲動容器
childrenReact.ReactNode—捲動穿越主視覺後顯露的內文
heroClassNamestring—套用在主視覺面板上的 class
titleClassNamestring—套用在主標題上的 class

細節

  • 三層深度分離:背景(z-0)位移最小且與游標反向,標題(z-10)居中,去背主體(z-20)位移最大且與游標同向;捲動時三層以不同速率移動,速率差即是深度。
  • 深度遮罩:主體為去背圖(透明 PNG)時,透明區自然露出後方標題、不透明區把標題遮住,形成鎖屏般的「文字繞到主體之後」效果,無需額外的 mask 資源。
  • 鎖屏細節:time 與 date 以鎖屏樣式置頂顯示,並隨捲動先行淡出。
  • 容器查詢排版:面板以 container-type: size 建立容器脈絡,標題與細節皆採 cqw 單位,能在任意面板尺寸下等比縮放。
  • 計時器/監聽清理:滑鼠視差以 motion 的 MotionValue 與 useSpring 驅動,捲動進度以 useScroll 綁定;事件僅在 pointermove / pointerleave 上註冊,卸載時由 React 自動移除。

可及性

  • 使用者系統開啟「減少動態效果」時,停用捲動視差與滑鼠視差,主視覺以靜態層疊呈現,版面結構不變。
  • 主標題以真實的標題標籤(titleAs)輸出,預設 h1;置於已有主標的頁面時可下修為 h2 / h3。
  • 主體圖提供 subjectAlt 時作為有意義影像朗讀,未提供時以 aria-hidden 視為純裝飾。
  • 背景、暈影、鎖屏時間等純視覺層皆標記 aria-hidden,不干擾輔助科技的閱讀順序。