WebberUI

Overprint Register

標題以多層色版疊印呈現,進入視口時各色版從錯位滑入精準套準,hover 再度輕微失準。

載入預覽⋯

Playground

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

8
1.2
0.15
<OverprintRegister />

安裝

npx shadcn@latest add https://webberui.com/r/overprint-register.json

或在 components.json 設定 registries 後,改用 @webberui/overprint-register 安裝。

安裝依賴後,從 registry JSON(/r/overprint-register.jsonfiles[0].content)複製 overprint-register.tsx 原始碼到你的 components/ui/ 目錄:

npm install motion clsx tailwind-merge

使用

import { OverprintRegister } from "@/components/ui/overprint-register";

<OverprintRegister text="OVERPRINT" className="text-5xl font-black" />

Props

Prop型別預設值說明
textstring要疊印的標題文字
colorsstring[]CMY/RGB 預設色版自訂各色版顏色(任何 CSS 色值),陣列長度即色版層數
offsetnumber8進場初始錯位幅度(px)
durationnumber1.2單一色版對位動畫時長(秒)
staggernumber0.15各色版依序對位的間隔(秒)
misalignOnHoverbooleantruehover 時各色版小幅隨機失準,移開後回正
oncebooleantrue只在第一次進入視口時播放

細節

  • 印刷套印隱喻:傳統多色印刷把一張圖拆成多塊色版依序印上,色版沒對齊就會出現彩色「鬼影」(misregistration)。這個元件把同一段文字渲染成 3–4 層絕對定位的彩色副本,初始各自往不同方向偏移,進入視口時依序滑回 (0, 0)——重現印刷機「套準」的瞬間;hover 時再輕微失準,像印刷機被碰了一下。
  • 深淺色混色策略:淺色主題用 mix-blend-multiply——如同油墨在白紙上減色混合,CMY 三版重疊處趨近黑色;深色主題切換為 mix-blend-screen——如同光線加色混合,RGB 三版重疊處趨近白色。兩種模式都由 dark: class 切換,預設色版也跟著換成對應色系(淺:青/洋紅/黃,深:紅/綠/藍螢光色)。
  • 自訂色版:傳入 colors 時兩個主題共用同一組顏色,但 multiply/screen 的切換仍然生效;建議挑選在兩種混色模式下都足夠飽和的顏色,或搭配固定主題使用。
  • 尺寸與排版:底層放一份 opacity-0 的佔位文字留在文件流內撐出尺寸,各色版以 absolute inset-0 疊在其上,因此換行、對齊與一般文字完全一致。容器帶 isolate 建立獨立堆疊上下文,混色只發生在色版之間,不會吃到頁面背景後方的其他內容。
  • hover 失準:對位完成後才啟用 hover;每次 hover 觸發時以動態 variant 重新取 2–3px 的隨機方向位移,所以每次失準的樣子都不同,移開後快速回正(不重播進場的 stagger 延遲)。

可及性

  • 使用者系統開啟「減少動態效果」時,直接顯示套準後的靜態疊印,不做進場與 hover 動畫
  • 真正的文字放在 sr-only,所有彩色色版與佔位層都是 aria-hidden 的裝飾性複本,螢幕閱讀器只會朗讀一次;視覺層帶 select-none,複製文字時不會重複

On this page