WebberUI

功能比較矩陣

方案功能對照表:sticky 首欄與表頭、差異列高亮、勾叉動畫。

完整的方案功能比較表 section:左側功能名欄與頂部方案列皆為 sticky,捲動時不迷路;儲存格支援勾/叉描邊動畫與文字值,進場逐列 stagger,右上角「只看差異」可過濾各方案相同的列(收合補位動畫),推薦方案整欄套用強調底色。

載入預覽⋯

Playground

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

440
<FeatureCompareMatrix />

安裝

npx shadcn@latest add https://webberui.com/r/feature-compare-matrix.json

或在 components.json 設定 registries 後,改用 @webberui/feature-compare-matrix 安裝。

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

npm install motion clsx tailwind-merge lucide-react

使用

import { FeatureCompareMatrix } from "@/components/ui/feature-compare-matrix";

<FeatureCompareMatrix
  plans={[
    { name: "入門", price: "NT$0" },
    { name: "專業", price: "NT$320/月", highlighted: true },
  ]}
  features={[
    { label: "自訂網域", values: [false, true] },
    { label: "版本歷史", values: ["7 天", "無上限"] },
  ]}
/>

Props

Prop型別預設值說明
plansComparePlan[]方案清單(表格的欄),建議 2–4 個
featuresCompareFeature[]功能清單(表格的列)
showDiffTogglebooleantrue是否顯示右上角「只看差異」切換鈕
defaultDiffOnlybooleanfalse「只看差異」的預設狀態
maxHeightnumber440捲動區最大高度(px),超出時垂直捲動、表頭保持 sticky
classNamestring透傳到最外層容器

ComparePlan

欄位型別說明
namestring方案名稱,顯示於表頭
pricestring?價格文字,顯示於方案名下方
highlightedboolean?推薦方案:整欄強調底色+表頭「推薦」徽章

CompareFeature

欄位型別說明
labelstring功能名稱,顯示於 sticky 首欄
values(boolean | string)[]各方案的值,順序對應 plans:boolean 顯示勾/叉、string 顯示文字,缺值視為不含

可及性

  • 表格以 ARIA role="table" / row / columnheader / rowheader / cell 標記結構,勾叉圖示另附 sr-only 文字(「包含」/「不含」)供螢幕閱讀器朗讀
  • 「只看差異」切換鈕為 role="switch" 並回報 aria-checked 狀態
  • 捲動區可鍵盤聚焦(tabIndex=0、附 aria-label),以方向鍵即可捲動表格
  • 使用者系統開啟「減少動態效果」時,停用逐列進場、勾叉描邊與收合補位動畫,內容直接完整顯示

On this page