動態效果
AppFuse Web 的動態效果以微妙、功能性為原則,透過 DaisyUI 主題變數統一管理動畫時長與行為。
動畫變數
Fusion 主題定義了以下動畫相關 CSS 變數:
| CSS 變數 | 值 | 說明 |
|---|---|---|
--animation-btn | 0.25s | 按鈕狀態轉換動畫時長 |
--animation-input | 0.2s | 輸入框狀態轉換動畫時長 |
--btn-focus-scale | 0.95 | 按鈕按下時的縮放比例 |
按鈕動畫
按鈕具備兩種動態回饋:
按下縮放
按鈕在被按下(:active)時會縮小至 95%,提供明確的觸覺回饋:
--btn-focus-scale: 0.95; /* 按下時縮放至 95% */
狀態轉換
按鈕的背景色、邊框色在 hover/focus 狀態間平滑過渡,時長 0.25s。
輸入框動畫
輸入框相關的動畫時長為 0.2s,比按鈕略快,涵蓋:
- 邊框色變化(default → focus)
- Floating Label 位移與縮放
- Underlined variant 底線展開
元件轉場慣例
| 元件 | 轉場屬性 | 時長 | 說明 |
|---|---|---|---|
| Button | background, border, transform | 0.25s | 包含 hover 變深、active 縮放 |
| Input | border-color, label position | 0.2s | 聚焦邊框、Floating Label |
| Checkbox/Radio | background, border | — | 使用 DaisyUI 預設轉場 |
| Switch | transform (thumb position) | — | 滑動切換 |
| Dropdown | opacity, transform | — | 展開/收合 |
| Toast | opacity, transform | — | 滑入/滑出 |
| Dialog | opacity, scale | — | 淡入放大 |
圖表動畫
Nivo 圖表使用 gentle 動畫配置,提供流暢但不誇張的資料過渡效果:
const defaultChartConfig = {
animate: true,
motionConfig: 'gentle',
}
Easing 慣例
| 場景 | Easing | 說明 |
|---|---|---|
| 一般狀態轉換 | ease (CSS 預設) | 平滑的加速與減速 |
| 展開/收合 | ease-out | 快速開始、慢慢結束 |
| Checkbox/Radio 觸控回饋 | transition-colors | 僅顏色過渡 |
禁用動畫
對於偏好減少動態效果的使用者,DaisyUI 會自動回應 prefers-reduced-motion 媒體查詢,減少或停用動畫。