Animating in Frames: Repeating Image Transition


In our last Motion Highlights collection, I added a really amazing reel by Joana Correia, a truly skilled motion designer. Her works are so thoughtful and browsing her latest projects I stumbled upon one of her other reels wrapping up her last year. Right at the beginning, there is this:

This small excerpt showcases a really interesting sliced repetition effect, which inspired me to try something new: animating “frames” of the same image along a path. I’m not sure if this is any good, but for some reason, I really like it. It feels like it could fit well within editorial design contexts.

It’s just a proof of concept, but I hope it sparks some new ideas for you too! 🙂

Configuration

There are better ways to do this obviously, but since this is a proof of concept and we want to be able to show various effects in our demo, I decided to do it like this. So here’s how the configuration works.

Each grid item can override the global animation settings by specifying data- attributes directly in the HTML. This allows fine-tuning of transitions on a per-item basis.

You can customize the following options for each .grid__item:

  • clipPathDirectiondata-clip-path-direction: Direction for clip-path animation (top-bottom, bottom-top, left-right, right-left).
  • stepsdata-steps: Number of mover elements created between grid item and panel.
  • stepDurationdata-step-duration: Duration (in seconds) of each mover animation step.
  • stepIntervaldata-step-interval: Delay (in seconds) between each mover’s animation start.
  • rotationRangedata-rotation-range: Maximum random rotation (±value, degrees) applied to movers.
  • wobbleStrengthdata-wobble-strength: Maximum random positional wobble (in pixels) during motion path generation.
  • moverPauseBeforeExitdata-mover-pause-before-exit: Pause duration (in seconds) before movers exit.
  • panelRevealEasedata-panel-reveal-ease: Easing function used when revealing the panel.
  • gridItemEasedata-grid-item-ease: Easing function for animating grid item exits.
  • moverEnterEasedata-mover-enter-ease: Easing function for movers entering.
  • moverExitEasedata-mover-exit-ease: Easing function for movers exiting.
  • panelRevealDurationFactordata-panel-reveal-duration-factor: Multiplier to adjust panel reveal animation timing.
  • clickedItemDurationFactordata-clicked-item-duration-factor: Multiplier to adjust clicked grid item animation timing.
  • gridItemStaggerFactordata-grid-item-stagger-factor: Multiplier for staggered grid item animations (based on distance).
  • moverBlendModedata-mover-blend-mode: CSS mix-blend-mode to apply to movers (normal, screen, etc.).
  • pathMotiondata-path-motion: Path motion type: linear (straight) or sine (curved).
  • sineAmplitudedata-sine-amplitude: Height of sine wave if using sine path motion (in pixels).
  • sineFrequencydata-sine-frequency: Frequency of sine wave motion (higher = more waves).

Example

<figure class="grid__item"
        data-clip-path-direction="left-right"
        data-steps="8"
        data-rotation-range="20"
        data-path-motion="sine"
        data-sine-amplitude="60"
        data-sine-frequency="6.28">

  <div class="grid__item-image" style="background-image: url(assets/img32.webp)"></div>
  
  <figcaption class="grid__item-caption">
    <h3>Aura — K21</h3>
    <p>Model: Lily Cooper</p>
  </figcaption>
  
</figure>

This item will fly with 8 movers, stronger rotation wobble, a sine wave path, and panel opening from left to right.

Try it out and play with it and I really hope you enjoy it!

Recent Articles

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here