Animations

Keyframe animations and transitions for entrance effects, micro-interactions, and UI feedback

💡 Interactive Demo: Click any animation box to replay the effect!

fade-animations

Smooth opacity-based entrance and exit effects

fade-animations
Fade In
Fade In Up
Fade In Down
Fade In Left
Fade In Right
<div class="demo-box animate-fade-in">Fade In</div>
<div class="demo-box animate-fade-in-up">Fade In Up</div>
<div class="demo-box animate-fade-in-down">Fade In Down</div>
<div class="demo-box animate-fade-in-left">Fade In Left</div>
<div class="demo-box animate-fade-in-right">Fade In Right</div>
/**
 * fade-animations - from public/showcase/effects/animations.
 */
export function mount(root) {
        // Make non-infinite animations retriggerable by clicking
    $('.demo-box').not('.animate-infinite').on('click', function () {
          const $box = $(this);
          const classes = $box.attr('class');

          // Remove and re-add animation classes to retrigger
          $box.attr('class', 'demo-box');

          // Use setTimeout to ensure CSS registers the change
          setTimeout(() => {
            $box.attr('class', classes);
          }, 10);
        });
}
<div class="animate-fade-in">Fade In</div>
<div class="animate-fade-in-up">Fade In Up</div>
<div class="animate-fade-in-down">Fade In Down</div>
<div class="animate-fade-in-left">Fade In Left</div>
<div class="animate-fade-in-right">Fade In Right</div>

slide-animations

Full-distance slide-in effects from screen edges

slide-animations
Slide In Up
Slide In Down
Slide In Left
Slide In Right
<div class="demo-box animate-slide-in-up">Slide In Up</div>
<div class="demo-box animate-slide-in-down">Slide In Down</div>
<div class="demo-box animate-slide-in-left">Slide In Left</div>
<div class="demo-box animate-slide-in-right">Slide In Right</div>
<div class="animate-slide-in-up">Slide In Up</div>
<div class="animate-slide-in-down">Slide In Down</div>
<div class="animate-slide-in-left">Slide In Left</div>
<div class="animate-slide-in-right">Slide In Right</div>

zoom-rotate

Scale and rotation-based entrance effects

zoom-rotate
Zoom In
Rotate In
Flip
<div class="demo-box animate-zoom-in">Zoom In</div>
<div class="demo-box animate-rotate-in">Rotate In</div>
<div class="demo-box animate-flip">Flip</div>
<div class="animate-zoom-in">Zoom In</div>
<div class="animate-rotate-in">Rotate In</div>
<div class="animate-flip">Flip</div>

attention

Looping animations for drawing user attention

attention
Bounce
Pulse
Shake
Spin
<div class="demo-box animate-bounce animate-infinite">Bounce</div>
<div class="demo-box animate-pulse animate-infinite">Pulse</div>
<div class="demo-box animate-shake">Shake</div>
<div class="demo-box animate-spin animate-infinite">Spin</div>
<div class="animate-bounce animate-infinite">Bounce</div>
<div class="animate-pulse animate-infinite">Pulse</div>
<div class="animate-shake">Shake</div>
<div class="animate-spin animate-infinite">Spin</div>

animation-control

Modify duration, delay, and iteration count

animation-control
Fast (0.3s)
Normal (0.6s)
Slow (1s)
Slower (2s)
<div class="demo-box animate-fade-in-up animate-duration-fast">Fast (0.3s)</div>
<div class="demo-box animate-fade-in-up animate-duration-normal">Normal (0.6s)</div>
<div class="demo-box animate-fade-in-up animate-duration-slow">Slow (1s)</div>
<div class="demo-box animate-fade-in-up animate-duration-slower">Slower (2s)</div>
<!-- Duration Control -->
<div class="animate-fade-in animate-duration-fast">Fast</div>
<div class="animate-fade-in animate-duration-slow">Slow</div>

<!-- Delay Control -->
<div class="animate-fade-in animate-delay-300">Delayed</div>

<!-- Iteration Control -->
<div class="animate-bounce animate-infinite">Infinite</div>
<div class="animate-bounce animate-once">Once</div>
<div class="animate-bounce animate-repeat-3">3 Times</div>

hover-animations

Trigger animations on hover for interactive feedback

hover-animations
Hover to Bounce
Hover to Pulse
Hover to Shake
Hover to Spin
<div class="demo-box demo-trigger animate-bounce-hover">Hover to Bounce</div>
<div class="demo-box demo-trigger animate-pulse-hover">Hover to Pulse</div>
<div class="demo-box demo-trigger animate-shake-hover">Hover to Shake</div>
<div class="demo-box demo-trigger animate-spin-hover">Hover to Spin</div>
<button class="animate-bounce-hover">Hover to Bounce</button>
<div class="animate-pulse-hover">Hover to Pulse</div>
<div class="animate-shake-hover">Hover to Shake</div>
<div class="animate-spin-hover">Hover to Spin</div>

stagger

Create cascading entrance effects using delay classes

stagger
Item 1
Item 2
Item 3
Item 4
<div class="demo-box animate-fade-in-up">Item 1</div>
<div class="demo-box animate-fade-in-up animate-delay-100">Item 2</div>
<div class="demo-box animate-fade-in-up animate-delay-200">Item 3</div>
<div class="demo-box animate-fade-in-up animate-delay-300">Item 4</div>
<div class="animate-fade-in-up">Item 1</div>
<div class="animate-fade-in-up animate-delay-100">Item 2</div>
<div class="animate-fade-in-up animate-delay-200">Item 3</div>
<div class="animate-fade-in-up animate-delay-300">Item 4</div>

css-variables

Customize animations using CSS custom properties

/* Animation Variables */
:root {
    --dm-animate-duration: 1s;
    --dm-animate-delay: 0s;
    --dm-animate-timing: ease;
}

/* Custom Duration */
.my-element {
    --dm-animate-duration: 2s;
}

/* Custom Timing Function */
.my-element {
    --dm-animate-timing: cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

usage

Practical examples of animation usage

<!-- Page Load Entrance -->
<div class="hero animate-fade-in-up">
    <h1>Welcome!</h1>
</div>

<!-- Button Feedback -->
<button class="btn animate-shake-hover">Delete</button>

<!-- Loading Indicator -->
<div class="loader animate-spin animate-infinite">⟳</div>

<!-- Alert Notification -->
<div class="alert animate-bounce animate-repeat-3">
    New message received!
</div>

<!-- Card Grid with Stagger -->
<div class="card animate-fade-in-up">Card 1</div>
<div class="card animate-fade-in-up animate-delay-100">Card 2</div>
<div class="card animate-fade-in-up animate-delay-200">Card 3</div>

performance

  • Use transform and opacity - These properties are GPU-accelerated
  • Limit simultaneous animations - Too many at once can cause jank
  • Remove animations after completion - Use JavaScript to clean up if needed
  • Test on lower-end devices - Ensure smooth performance across devices
  • Respect prefers-reduced-motion - Consider users with motion sensitivity