WebberUI

直書春聯

上下聯直書+橫批的春聯版面:紅底金字、逐字落筆進場。

writing-mode: vertical-rl 排出右上聯、左下聯的傳統春聯版面,搭配頂部橫批與可選的菱形福字。紅絨布質感底、金色漸層浮雕字,進場時逐字如毛筆落定(放大模糊到縮小定格),hover 單聯微微飄動如紙。

載入預覽⋯

Playground

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

0.1
0.5
<VerticalCouplet />

安裝

npx shadcn@latest add https://webberui.com/r/vertical-couplet.json

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

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

npm install motion clsx tailwind-merge

使用

import { VerticalCouplet } from "@/components/ui/vertical-couplet";

<VerticalCouplet
  upper="天增歲月人增壽"
  lower="春滿乾坤福滿門"
  horizontal="四季平安"
  showFu
/>

上聯依傳統貼於面向門口的右側、下聯貼於左側,組件已依此排版,DOM 順序仍維持「橫批 → 上聯 → 下聯」的閱讀順序。橫批依現代習慣由左至右顯示,若想要傳統右起的讀法,傳入反轉後的字串即可。

Props

Prop型別預設值說明
upperstring上聯,直書由上而下,視覺上位於右側
lowerstring下聯,視覺上位於左側
horizontalstring橫批;不傳則不顯示頂部橫幅
showFubooleanfalse是否在兩聯之間斜貼菱形「福」字
staggernumber0.1逐字落筆的間隔(秒)
durationnumber0.5單一字從懸空到落定的動畫時長(秒)
classNamestring透傳到外層容器

可及性

  • 使用者系統開啟「減少動態效果」時,跳過逐字落筆與 hover 飄動,直接靜態顯示完整春聯
  • 每一聯的完整文字以 sr-only 提供給輔助科技朗讀,拆分後的逐字 span 皆為 aria-hidden
  • DOM 順序即正確閱讀順序(橫批 → 上聯 → 下聯),螢幕閱讀器不受右至左的視覺排版影響
  • 文字為真實 DOM 文字而非圖片,可被選取、搜尋與翻譯

On this page