动画等待完全完成以重新开始
Animation waits to fully finish to start it over
为什么动画结束时有延迟?我想不通。当它完成第一部分时,即使所有块的宽度等于 300px,它会执行第二部分 return 它回到 50px 然后它等到整个动画结束,然后才开始另一个循环。有什么方法可以使块异步吗?这样他们就不会等待其他块完成动画。
anime({
targets: '.b-main > div',
width: [
{ value: 300, duration: 1200},
{ value: 50, duration: 1200}
],
easing: 'easeInOutBack',
duration: 5000,
delay: function(el, i, l) {
return i * 300;
},
loop: true
});
.b-main > div {
background-color: red;
width: 50px;
height: 50px;
margin: 20px;
}
<script src="https://animejs.com/lib/anime.min.js"></script>
<div class="b-main">
<div class="b1"></div>
<div class="b2"></div>
<div class="b3"></div>
<div class="b4"></div>
</div>
您有一个从 0% 到 100% 的动画;在 0% 时,所有块都处于静止状态;也为 100%;因此延迟。
最明显的方法是将一个动画分成四个,这样块是独立的:
const targets = document.querySelectorAll('.b-main > div');
targets.forEach((target, i) =>
setTimeout(() =>
anime({
targets: target,
width: [
{ value: 300, duration: 1200},
{ value: 50, duration: 1200}
],
easing: 'easeInOutBack',
duration: 5000,
loop: true
}),
i * 300
)
);
.b-main > div {
background-color: red;
width: 50px;
height: 30px;
margin: 10px;
}
<script src="https://animejs.com/lib/anime.min.js"></script>
<div class="b-main">
<div class="b1"></div>
<div class="b2"></div>
<div class="b3"></div>
<div class="b4"></div>
</div>
为什么动画结束时有延迟?我想不通。当它完成第一部分时,即使所有块的宽度等于 300px,它会执行第二部分 return 它回到 50px 然后它等到整个动画结束,然后才开始另一个循环。有什么方法可以使块异步吗?这样他们就不会等待其他块完成动画。
anime({
targets: '.b-main > div',
width: [
{ value: 300, duration: 1200},
{ value: 50, duration: 1200}
],
easing: 'easeInOutBack',
duration: 5000,
delay: function(el, i, l) {
return i * 300;
},
loop: true
});
.b-main > div {
background-color: red;
width: 50px;
height: 50px;
margin: 20px;
}
<script src="https://animejs.com/lib/anime.min.js"></script>
<div class="b-main">
<div class="b1"></div>
<div class="b2"></div>
<div class="b3"></div>
<div class="b4"></div>
</div>
您有一个从 0% 到 100% 的动画;在 0% 时,所有块都处于静止状态;也为 100%;因此延迟。
最明显的方法是将一个动画分成四个,这样块是独立的:
const targets = document.querySelectorAll('.b-main > div');
targets.forEach((target, i) =>
setTimeout(() =>
anime({
targets: target,
width: [
{ value: 300, duration: 1200},
{ value: 50, duration: 1200}
],
easing: 'easeInOutBack',
duration: 5000,
loop: true
}),
i * 300
)
);
.b-main > div {
background-color: red;
width: 50px;
height: 30px;
margin: 10px;
}
<script src="https://animejs.com/lib/anime.min.js"></script>
<div class="b-main">
<div class="b1"></div>
<div class="b2"></div>
<div class="b3"></div>
<div class="b4"></div>
</div>