跳至主要内容

密度系統

AppFuse Web 提供三級密度系統,讓同一組元件適應不同使用場景 — 從寬鬆的表單佈局到緊湊的資料密集型介面。

三級密度

密度高度字體大小適用場景
comfortable48px16px (text-base)一般表單、主要操作區域(預設值)
compact40px14px (text-sm)資料密集型介面、篩選列
tight32px14px (text-sm)表格內嵌操作、與純文字環境搭配
預設值

元件的預設密度為 comfortable(48px),提供最舒適的觸控與點擊體驗。tight 密度僅 Button 支援,適合表格內嵌等空間受限的場景。

各組件密度映射

Button

密度DaisyUI Class高度字體
comfortablebtn-lg48pxtext-base (16px)
compactbtn-md40pxtext-sm (14px)
tightbtn-sm32pxtext-sm (14px)
<Button density="comfortable">確認送出</Button>  {/* 48px - 表單主按鈕 */}
<Button density="compact">篩選</Button> {/* 40px - 工具列 */}
<Button density="tight">編輯</Button> {/* 32px - 表格內 */}

Input

密度DaisyUI Class高度字體
comfortableinput-lg48pxtext-base (16px)
compactinput-md40pxtext-sm (14px)
<Input density="comfortable" label="客戶名稱" />  {/* 48px */}
<Input density="compact" label="搜尋" /> {/* 40px */}

Select

密度高度字體
comfortable48px (min-h-[3rem])text-base (16px)
compact40px (min-h-[2.5rem])text-sm (14px)

Checkbox

密度DaisyUI Class控件尺寸標籤字體
comfortablecheckbox-sm20pxtext-base (16px)
compactcheckbox-xs16pxtext-sm (14px)

Radio

密度DaisyUI Class控件尺寸標籤字體
comfortableradio-sm20pxtext-base (16px)
compactradio-xs16pxtext-sm (14px)

Switch

密度DaisyUI Class控件尺寸標籤字體
comfortabletoggle-sm33pxtext-base (16px)
compacttoggle-xs26pxtext-sm (14px)

DataTable

密度Cell Padding說明
comfortable預設值標準表格間距
compactp-2 (8px)緊湊表格,不縮小字體
備註
DataTable 不使用 table-sm

DataTable 的 compact 模式僅縮減 padding,不使用 DaisyUI 的 table-sm class,避免被強制設定 12px 字體。

密度對齊原則

同一表單中的元件應使用相同密度,確保視覺對齊:

// ✅ Do:同一表單統一密度
<Input density="compact" label="姓名" />
<Select density="compact" label="類別" />
<Button density="compact">送出</Button>

// ❌ Don't:混用不同密度
<Input density="comfortable" label="姓名" />
<Select density="compact" label="類別" />
<Button density="tight">送出</Button>

觸控目標規範

無論視覺尺寸為何,所有可互動元件的有效觸控區域必須至少 44 × 44pxWCAG 2.5.5)。

對於視覺尺寸小於 44px 的控件(如 compact 密度的 Checkbox 16px、Radio 16px),框架透過透明偽元素擴展觸控區域:

/* Checkbox compact:16px + 28px padding = 44px 觸控區域 */
checkbox-xs relative
after:absolute after:-inset-[14px]
after:content-[""] after:rounded-full

/* Checkbox comfortable:20px + 24px padding = 44px 觸控區域 */
checkbox-sm relative
after:absolute after:-inset-3
after:content-[""] after:rounded-full

這確保即使在 compact 模式下,使用者在行動裝置上仍能輕鬆點擊。

使用場景指引

場景建議密度原因
新增/編輯表單comfortable欄位數較少,著重操作體驗
搜尋與篩選列compact減少垂直空間佔用
表格內嵌操作tight (Button)與表格文字高度對齊
資料密集型頁面compact畫面可顯示更多資訊
行動裝置comfortable確保足夠的觸控區域

相關文件