Staggered layout animation
The AutoLayout delay property accepts the stagger() utility method to easily create staggered animations of layout children changes.
Staggered layout animation code example
import { createLayout, utils, stagger } from 'animejs';
const [ $button ] = utils.$('.controls button');
const [ $root ] = utils.$('.layout-container');
const items = utils.$('.item');
const layout = createLayout($root, { ease: 'outExpo' });
function animateLayout() {
layout.update(() => {
$root.classList.toggle('row');
}, {
// Different stagger "from" param depending on the layout state
delay: stagger(50, { from: $root.classList.contains('row') ? 'last' : 'first' })
});
}
$button.addEventListener('click', animateLayout);
<div class="large layout centered row">
<div class="layout-container">
<div class="item col">Item A</div>
<div class="item col">Item B</div>
<div class="item col">Item C</div>
<div class="item col">Item D</div>
<div class="item col">Item E</div>
</div>
</div>
<div class="medium row">
<fieldset class="controls">
<button class="button">Stagger animation</button>
</fieldset>
</div>
#layout-usage-staggered-layout-animation .layout-container {
overflow: scroll;
flex-wrap: nowrap;
}
#layout-usage-staggered-layout-animation .layout-container .item {
min-height: 2rem;
}