Attention Grabbers

dylantarre/animation-principles/skills/05-by-animation-type/attention-grabbers

by dylantarre83597134ba8fNo license99 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 9 months ago

Use when drawing user focus - notification badges, new feature highlights, error callouts, promotional banners, or any animation meant to attract attention.

Instructions onlyDesign & Creative
AI-generated overview

Guides attention-drawing UI animations using Disney's 12 principles, with timing tables and CSS patterns.

What it does
This skill provides guidance for designing focus-drawing motion in user interfaces, such as notification badges, new feature highlights, error callouts and promotional banners. It maps Disney's 12 animation principles onto attention elements and supplies timing recommendations, decay rules and CSS keyframe examples for pulses, glows, shakes and rings. It also defines an attention budget with rules for limiting, auto-stopping and dismissing attention animations.
When to use it
Use it when adding or reviewing motion meant to attract user focus, such as badges, notification dots, error shakes or promotional highlights. It is also useful for setting timing, cycle counts and decay behavior for such animations.
Requirements
No scripts or tools are required; it is instructions only. Applying the CSS and JavaScript examples assumes a UI environment that supports CSS animations and the Web Animations API.

Attention-Grabbing Animations

Apply Disney's 12 principles to focus-drawing motion.

Principle Application

Squash & Stretch: Pulsing scale draws attention. 1.0 → 1.1 → 1.0 cycle catches peripheral vision.

Anticipation: Brief pause before attention animation. Let it build then release.

Staging: Position attention elements where users will see them. Corner badges, inline highlights.

Straight Ahead vs Pose-to-Pose: Design attention states: rest, active/pulsing, acknowledged.

Follow Through & Overlapping: Badge pulses, then count updates. Stagger the attention signals.

Slow In/Slow Out: Ease in/out on pulses. Smooth oscillation is less jarring than sharp bounces.

Arcs: Shake animations follow arc patterns. Left-right with slight vertical oscillation.

Secondary Action: Pulse + glow + color shift for maximum attention (use sparingly).

Timing:

  • Single attention grab: 300-500ms
  • Repeating pulse: 2000-3000ms cycle
  • Urgent pulse: 1000-1500ms cycle
  • Decay: Stop after 3-5 cycles or 10 seconds

Exaggeration: This is where exaggeration shines. Scale to 1.2, bright colors, bold motion.

Solid Drawing: Attention elements must still feel part of the UI, not floating or detached.

Appeal: Attention should feel like helpful notification, not aggressive demand.

Timing Recommendations

Attention TypeDurationCyclesDecay
Badge Pulse300ms2-3Stop after animation
Notification Dot2000ms36 seconds total
New Feature500ms2Stay subtle
Error Shake400ms1None
Urgent Alert1000msinfiniteUntil dismissed
Promotional3000ms26 seconds

Implementation Patterns

css
/* Pulse attention */.badge-pulse {  animation: pulse 2000ms ease-in-out 3;}
@keyframes pulse {  0%, 100% { transform: scale(1); }  50% { transform: scale(1.15); }}
/* Subtle glow */.glow-attention {  animation: glow 2000ms ease-in-out 3;}
@keyframes glow {  0%, 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); }  50% { box-shadow: 0 0 0 8px rgba(59, 130, 246, 0.3); }}
/* Error shake */.shake {  animation: shake 400ms ease-in-out;}
@keyframes shake {  0%, 100% { transform: translateX(0); }  20%, 60% { transform: translateX(-8px); }  40%, 80% { transform: translateX(8px); }}
/* Ring animation (notification) */.ring {  animation: ring 2500ms ease-in-out 2;}
@keyframes ring {  0%, 100% { transform: rotate(0); }  10%, 30% { transform: rotate(10deg); }  20%, 40% { transform: rotate(-10deg); }  50%, 100% { transform: rotate(0); }}

Attention Budget

javascript
// Auto-stop attention after timeoutconst attention = element.animate([  { transform: 'scale(1)' },  { transform: 'scale(1.15)' },  { transform: 'scale(1)' }], {  duration: 2000,  iterations: 3});
// Or with CSSsetTimeout(() => {  element.classList.remove('attention');}, 6000);

Key Rules

  1. Maximum 1 attention animation visible at a time
  2. Auto-stop after 3-5 cycles (10 seconds max)
  3. Provide way to permanently dismiss
  4. Never use for non-essential content
  5. prefers-reduced-motion: static indicator only, no animation
  6. Urgent animations must have audio/haptic alternative for accessibility

Source and attribution

Source:dylantarre/animation-principlesinskills/05-by-animation-type/attention-grabbersat commit8359713

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal