Micro Interactions

dylantarre/animation-principles/skills/01-by-domain/micro-interactions

作者 dylantarre83597134ba8f無授權條款99 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫9 個月前更新

Use when designing small UI feedback moments like button states, toggles, form validation, loading indicators, or notification badges.

僅含說明Design & Creative
AI 產生的概覽

將迪士尼十二項動畫原則套用於按鈕、開關、核取方塊與徽章等小型介面回饋動效的設計。

功能
此技能指導介面細節的微互動動畫設計,把迪士尼十二項動畫原則逐條對應到具體的介面實作方式。內容涵蓋按鈕狀態、開關、核取方塊、表單驗證、載入指示與通知徽章,並提供 CSS 程式碼片段以及包含時長與緩動曲線的時序參考表。它也列出最佳實務,例如尊重 prefers-reduced-motion,以及確保功能不依賴動畫。
適用情境
在設計或調整按鈕按下狀態、開關、表單驗證、載入指示或通知徽章等小型介面回饋時使用。適合需要統一動效時長與緩動規範的前端介面琢磨工作。
執行需求
不含指令碼或資源,僅為說明性內容。套用其中的 CSS 範例需要支援 CSS 轉場與動畫的前端環境。

Micro-interaction Animation

Apply Disney's 12 animation principles to small UI feedback moments and interface details.

Quick Reference

PrincipleMicro-interaction Implementation
Squash & StretchButton press compression, toggle bounce
AnticipationHover state hints, pre-click feedback
StagingFocus attention on active element
Straight Ahead / Pose to PoseProgress vs state changes
Follow Through / OverlappingRipple effects, settling motion
Slow In / Slow OutSnappy but smooth transitions
ArcToggle switches, circular menus
Secondary ActionIcons respond to parent state
Timing100-300ms for most interactions
ExaggerationClear but not distracting
Solid DrawingConsistent transform behavior
AppealDelightful, purposeful feedback

Principle Applications

Squash & Stretch: Buttons compress slightly on press (scaleY: 0.95). Toggle thumbs squash when hitting bounds. Notification badges bounce on update. Keep subtle—this is UI, not cartoon.

Anticipation: Hover states prepare for click. Buttons lift/grow slightly before press animation. Draggable items elevate on grab start. Loading spinners wind up before spinning.

Staging: Active form field clearly distinguished. Error states demand attention. Success confirmations are unmistakable. One interaction feedback at a time.

Straight Ahead vs Pose to Pose: Progress indicators animate continuously (straight ahead). Checkboxes snap between states (pose to pose). Combine: loading indicator ends with state-change snap.

Follow Through & Overlapping: Ripple effects expand past tap point. Toggle switches overshoot then settle. Checkmarks draw with slight delay after box fills. Menu items stagger in.

Slow In / Slow Out: Quick ease-out for responsive feel. 100ms with ease-out feels instant. Avoid linear—looks broken. Snappy entrance, gentle settling.

Arc: Toggle switches travel in slight arc. Circular action buttons expand radially. Dropdown carets rotate smoothly. Menu items can follow curved path.

Secondary Action: Icon changes color as button state changes. Badge count updates with parent notification. Helper text appears as input focuses. Shadow responds to elevation.

Timing: Immediate feedback: 50-100ms. Standard transitions: 100-200ms. Complex micro-interactions: 200-300ms. Anything longer feels sluggish for small UI.

Exaggeration: Enough to notice, not enough to distract. Error shakes: 3-5px, not 20px. Success scales: 1.05-1.1, not 1.5. Subtle but unmistakable.

Solid Drawing: Transform origin matters—buttons scale from center, tooltips from pointer. Consistent behavior across similar elements. Maintain visual integrity during animation.

Appeal: Micro-interactions add personality without overwhelming. Users should feel the interface is responsive and alive. Small delights build into overall experience quality.

Component Patterns

Button States

css
.button {    transition: transform 100ms ease-out,                box-shadow 100ms ease-out;}.button:hover {    transform: translateY(-1px);    box-shadow: 0 2px 8px rgba(0,0,0,0.15);}.button:active {    transform: translateY(0) scale(0.98);    box-shadow: 0 1px 2px rgba(0,0,0,0.1);}

Toggle Switch

css
.toggle-thumb {    transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);}.toggle-thumb.active {    transform: translateX(20px);}

Checkbox

css
.checkmark {    stroke-dasharray: 20;    stroke-dashoffset: 20;    transition: stroke-dashoffset 200ms ease-out 50ms;}.checkbox:checked + .checkmark {    stroke-dashoffset: 0;}

Timing Reference

InteractionDurationEasing
Hover100msease-out
Click/tap100msease-out
Toggle150-200msspring/elastic
Checkbox150msease-out
Focus ring100msease-out
Tooltip show150msease-out
Tooltip hide100msease-in
Badge update200mselastic
Form error200msease-out

Best Practices

  1. Every interactive element needs feedback
  2. Disabled states: no animation, reduced opacity
  3. Group related feedback together
  4. Don't animate on every change—filter unnecessary updates
  5. Test without animation—functionality shouldn't depend on it
  6. Respect prefers-reduced-motion

來源與署名

來源:dylantarre/animation-principles位於skills/01-by-domain/micro-interactions提交8359713

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架