ScrollObserver V4
在滚动时触发和同步定时器、动画和时间线实例
ScrollObserver 通过 onScroll()
函数创建,可以直接在 autoplay parameter
中声明。
import { onScroll, animate } from 'animejs';
animate(targets, { x: 100, autoplay: onScroll(parameters) });
参数
名称 | 接受 |
---|---|
参数 | Object 的 ScrollObserver 设置、ScrollObserver 阈值、ScrollObserver 同步模式 和 ScrollObserver 回调 |
返回
ScrollObserver
ScrollObserver 代码示例
import { animate, utils, onScroll } from 'animejs';
const [ container ] = utils.$('.scroll-container');
const debug = true;
// Animation
animate('.square', {
x: '15rem',
rotate: '1turn',
duration: 2000,
alternate: true,
loop: true,
autoplay: onScroll({ container, debug })
});
// Timer
const [ $timer ] = utils.$('.timer');
createTimer({
duration: 2000,
alternate: true,
loop: true,
onUpdate: self => {
$timer.innerHTML = self.iterationCurrentTime
},
autoplay: onScroll({
target: $timer.parentNode,
container,
debug
})
});
// Timeline
const circles = utils.$('.circle');
createTimeline({
alternate: true,
loop: true,
autoplay: onScroll({
target: circles[0],
container,
debug
})
})
.add(circles[2], { x: '9rem' })
.add(circles[1], { x: '9rem' })
.add(circles[0], { x: '9rem' });
<div class="scroll-container scroll-y">
<div class="scroll-content grid square-grid">
<div class="scroll-section padded">
<div class="large centered row">
<div class="label">scroll down</div>
</div>
</div>
<div class="scroll-section padded">
<div class="large row">
<div class="square"></div>
</div>
</div>
<div class="scroll-section padded">
<div class="large centered row">
<pre class="large log row">
<span class="label">timer</span>
<span class="timer value lcd">0</span>
</pre>
</div>
</div>
<div class="scroll-section padded">
<div class="large row">
<div class="circle"></div>
<div class="circle"></div>
<div class="circle"></div>
</div>
</div>
</div>
</div>
本节内容