WebberUI

表情評分滑桿

拖曳滑桿時表情從哭到愛心漸變,臉部隨值變形。

拖曳滑桿時,SVG 臉的嘴角、眉毛與眼睛隨數值即時插值變形:低分哭喪流淚、中段平淡、高分綻放星星眼與飄浮愛心,主色也同步從紅漸變到綠,適合滿意度調查與回饋表單。

載入預覽⋯

Playground

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

50
132
<EmojiRatingSlider />

安裝

npx shadcn@latest add https://webberui.com/r/emoji-rating-slider.json

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

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

npm install motion clsx tailwind-merge

使用

import { EmojiRatingSlider } from "@/components/ui/emoji-rating-slider";

export function FeedbackCard() {
  const [score, setScore] = React.useState(72);

  return <EmojiRatingSlider value={score} onChange={setScore} />;
}

Props

Prop型別預設值說明
valuenumber受控值(0–100),未提供時為非受控模式
defaultValuenumber50非受控模式的初始值(0–100)
onChange(value: number) => void數值變更回呼,拖曳與鍵盤操作都會觸發
labelsstring[]內建五級標籤等級文字標籤(由低到高),用於顯示與 aria-valuetext 播報
faceSizenumber132表情臉的寬度(px)
ariaLabelstring"滿意度評分"滑桿的無障礙名稱
classNamestring透傳到外層容器

可及性

  • 互動由原生 input type="range" 承接,方向鍵可逐格調整、Home/End 跳至兩端
  • aria-valuetext 以「分數 + 等級標籤」播報目前狀態,例如「85 分,非常滿意」
  • 表情臉與自訂拇指皆為裝飾性元素,對輔助科技隱藏(aria-hidden
  • 使用者系統開啟「減少動態效果」時,關閉 spring 平滑與眼淚、愛心等循環動畫,表情直接呈現對應狀態

On this page