Continuous Loops

dylantarre/animation-principles/skills/05-by-animation-type/continuous-loops

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

Use when creating ongoing animations - loading spinners, pulsing indicators, ambient motion, background effects, or any animation that repeats indefinitely.

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

指導建立無縫、無限循環的介面動畫,例如載入轉圈、脈衝指示與氛圍動態效果。

功能
把迪士尼十二項動畫原則套用到持續循環,涵蓋擠壓與伸展、預備動作、場面調度、弧線、節奏與吸引力。它為轉圈、脈衝、骨架微光、打字圓點、呼吸與漂浮效果提供時長、緩動與循環次數建議。也提供 CSS 關鍵影格範例以及效能規則,例如只對 transform 與 opacity 做動畫、暫停畫面外的循環並遵循減少動態效果偏好。
適用情境
適合建立載入轉圈、脈衝指示器、氛圍背景動態或任何無限重複的動畫。適用於需要讓循環看起來自然流暢而非機械化的前端工作。
執行需求
此技能不附帶指令碼或資源,只有說明文件。套用時需要支援 CSS 動畫的前端環境,文中也提到 Intersection Observer 與 prefers-reduced-motion。

Continuous Loop Animations

Apply Disney's 12 principles to animations that never stop.

Principle Application

Squash & Stretch: Subtle scale oscillation (0.98-1.02) creates organic breathing. Avoid rigid mechanical loops.

Anticipation: Build anticipation into the loop cycle. Brief pause at extremes before reversing.

Staging: Loops should support, not dominate. Keep amplitude subtle for background elements.

Straight Ahead vs Pose-to-Pose: Design keyframe poses that loop seamlessly. End frame must flow into start frame.

Follow Through & Overlapping: Multi-part loops have elements at different phases. Three dots pulse with 120° phase offset.

Slow In/Slow Out: Use ease-in-out for smooth oscillations. Linear motion looks mechanical.

Arcs: Circular motion follows true arcs. Spinners rotate, pendulums swing, orbits circle.

Secondary Action: Primary rotation + secondary wobble. Spinner spins while slightly bouncing.

Timing:

  • Fast loops: 500-800ms (spinners, urgent indicators)
  • Medium loops: 1000-2000ms (pulsing, breathing)
  • Slow loops: 2000-4000ms (ambient, background)

Exaggeration: Minimal for loops - they're already attention-grabbing through repetition.

Solid Drawing: Loops must be seamless. Any jump between end and start destroys the illusion.

Appeal: Loops should be hypnotic, not annoying. Test at 30 seconds - still pleasant?

Timing Recommendations

Loop TypeDurationEasingIterations
Spinner600-800mslinear (rotation)infinite
Pulse1500-2000msease-in-outinfinite
Skeleton Shimmer1500msease-in-outinfinite
Typing Dots1400msease-in-outinfinite
Breathing3000-4000msease-in-outinfinite
Floating3000-5000msease-in-outinfinite

Implementation Patterns

css
/* Smooth spinner */.spinner {  animation: spin 700ms linear infinite;}
@keyframes spin {  to { transform: rotate(360deg); }}
/* Organic pulse */.pulse {  animation: pulse 2000ms ease-in-out infinite;}
@keyframes pulse {  0%, 100% { transform: scale(1); opacity: 1; }  50% { transform: scale(1.05); opacity: 0.8; }}
/* Staggered dots */.dot {  animation: bounce 1400ms ease-in-out infinite;}.dot:nth-child(2) { animation-delay: 160ms; }.dot:nth-child(3) { animation-delay: 320ms; }

Performance Rules

  1. Use transform and opacity only - no layout properties
  2. Add will-change: transform for loops over 1 second
  3. Pause off-screen loops with Intersection Observer
  4. Respect prefers-reduced-motion - reduce or stop loops

Seamless Loop Formula

For breathing/pulsing: 0%, 100% keyframes must be identical. Use alternate direction for simpler ping-pong effects.

來源與署名

來源:dylantarre/animation-principles位於skills/05-by-animation-type/continuous-loops提交8359713

授權條款: 無授權條款

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

檢舉或申請下架