您是否嘗試過使用最新的v1.18.0 GSAP的推出了新的cycle
財產?
這樣你就可以週期與delay
但在staggerTo
調用傳遞0
爲stagger
值。
另外,您可以將position
參數傳遞給staggerTo
調用,以使它們與先前插入的補間重疊。
Here是一個想法的分叉筆。
的JavaScript:
...
animateElement = function() {
timeline.from(main, 0.3, { scaleY: '0%', ease: Back.easeOut.config(1.7) })
.staggerFrom(dataBlocks, 0.3, { cycle: { delay: function(index) {
return index * 0.1;
}}, scale: '0%', y: 100, ease: Back.easeOut.config(1.7) }, 0)
.from(lineGraphLines, 1.5, { drawSVG: 0, ease: Power1.easeOut }, '-=0.5')
.from(lineGraphAreas, 1, { opacity: 0, ease: Back.easeOut.config(1.7) }, '-=2.0')
.staggerFrom(lineGraphDots, 0.2, { cycle: { delay: function(index) {
return index * 0.1;
}}, scale: 0, ease: Back.easeOut.config(1.7) }, 0, '-=1.0')
.staggerFrom(donutCharts, 0.6, { cycle: { delay: function(index) {
return index * 0.1;
}}, drawSVG: 0, ease: Power1.easeOut }, 0, '-=2.0')
.from(menuBackground, 0.3, { scaleX: '0%', ease: Back.easeOut.config(1.7) }, '-=6')
.staggerFrom(menuElements, 0.3, { cycle: { delay: function(index) {
return index * 0.1;
}}, scaleX: '0%', ease: Back.easeOut.config(1.7) }, 0, '-=1')
.from(headerBackground, 0.5, { scaleX: '0%', ease: Power1.easeOut }, '-=5.5')
.staggerFrom(headerBoxes, 0.3, { cycle: { delay: function(index) {
return index * 0.1;
}}, scale: '0%', ease: Back.easeOut.config(1.7) }, 0, '-=1.0')
.staggerFrom(headerText, 0.4, { cycle: { delay: function(index) {
return index * 0.1;
}}, scaleX: '0%', ease: Back.easeOut.config(1.7) }, 0, '-=1.0')
.from(headerText, 0.4, { scaleX: '0%', ease: Back.easeOut.config(1.7) }, '-=4');
};
...
這可能不是你想要的動畫完全類型,但是你需要調整在大部分position
參數/所有的補間按照自己的喜好,但我認爲主要帶走你將是使用cycle
與delay
。
希望這有助於某種方式。
P.S.您可以傳遞負值stagger
,但它們的含義不同。它告訴引擎從最後一個元素開始動畫動畫。
這似乎有它!我不會假裝我確切地知道這裏發生了什麼,但這使我走上了正確的道路。這是我第一次使用Greensock,不得不說,迄今爲止愛它! – nickspiel