WebberUI

表情噴發回饋

點擊反應按鈕噴發一串上飄表情粒子,連點加倍。

點擊反應按鈕,從按鈕中心噴發一串隨機角度、旋轉與大小的表情粒子,上飄淡出後自動清理;在時間窗內快速連點會累積 combo 連擊,粒子數量隨之加倍,適合貼文按讚、留言反應等即時回饋場景。

載入預覽⋯

Playground

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

12
0
900
<EmojiBurstReaction />

安裝

npx shadcn@latest add https://webberui.com/r/emoji-burst-reaction.json

或在 components.json 設定 registries 後,改用 @webberui/emoji-burst-reaction 安裝。

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

npm install motion clsx tailwind-merge

使用

import { EmojiBurstReaction } from "@/components/ui/emoji-burst-reaction";

<div className="flex gap-2">
  <EmojiBurstReaction emoji="👏" label="鼓掌" initialCount={18} />
  <EmojiBurstReaction
    emoji="🎉"
    label="慶祝"
    burstEmojis={["🎉", "🎊", "✨"]}
    onReact={(total, combo) => console.log(total, combo)}
  />
</div>

Props

Prop型別預設值說明
emojistring"🎉"按鈕上顯示、也是預設噴發的表情符號
labelstring按鈕的標籤文字,顯示在表情右側
countnumber12每次點擊噴發的粒子數量(連點 combo 會再加成,上限為三倍)
initialCountnumber0初始反應數,顯示於按鈕右側並隨點擊累加
burstEmojisstring[][emoji]噴發粒子隨機取用的表情清單
comboWindownumber900判定連點 combo 的時間窗(毫秒),逾時 combo 歸零
onReact(total: number, combo: number) => void每次點擊的回呼,帶入累計反應數與目前 combo 數
classNamestring透傳合併到按鈕

可及性

  • 使用原生 <button> 元素,可鍵盤聚焦,Enter / Space 皆可觸發
  • aria-label 帶出反應名稱與目前累計次數,螢幕閱讀器可完整理解狀態
  • 噴發粒子與 combo 連擊徽章皆為純裝飾,標記 aria-hidden 不干擾輔助科技
  • 使用者系統開啟「減少動態效果」時,不噴發粒子、數字切換也取消動畫,僅保留計數回饋

On this page