我有一个网站,我使用TimelineLite
暂停,并使用滚动条手动推进时间轴。
我在整个时间线上也有5个停顿,所以我可以点击一个按钮观看一个场景'的时间表。
每个动画场景基本上都在顶部的屏幕上进行补间,而下一个元素从底部补间到屏幕。
一切正常。
然而,当我调整浏览器大小时,我注意到时间轴的补间仍然是旧值的动画。
我的时间轴包含TweenLite.to(...)
个补间。例如,如果我的浏览器高度为700
像素,并且我将视图中的场景1和场景2添加到视图中,那么当我调整大小并使用timeline.reverse();
时,我会看到场景2补间回到700
像素。 (场景2绝对定位,translateY
设置为100%
。但是,由于我的补间使用y: '100%'
,我希望它反转到100%
而不是这个旧的预调整大小值700
像素。
奇怪的是,场景1最初位于0,0
并且补间为0,-100%
,仍然补间到百分比值,这样一个看起来不错。
所以当我设置百分比值和场景1补间的百分比时,我发现场景2在像素中补间非常奇怪。
是怎么回事?如何在补间中阻止此像素值缓存?
我已经尝试了invalidate()
,kill()
,clear()
,然后将时间轴设置为null
,然后在新的时间轴上重新插入新的补间,但不知怎的那些补间值仍然存在。
我不知所措。任何帮助将不胜感激。
答案 0 :(得分:0)
我认为您应该使用的是 yPercent
,以便为补间设置动画而不是绝对像素值,或者只是简单地设置y
属性的动画。
yPercent
(以及xPercent
)所做的是,无论屏幕大小如何,它们始终会对齐您的元素,因此会根据您提供的值做出响应。
Here 是由 GSAP 人员自己制作的一个例子,根据它的外观以及我从您的问题中能够理解的内容,实际上也非常接近你自己的情况。
Petr Tichy 还有 video tutorial ,他解释了使用x
和xPercent
之间的差异。
P.S。您可以分享您正在处理的这个网站,还是准备一个小提琴或一个孤立的问题?这有助于我们提出准确的解决方案。
答案 1 :(得分:0)
回答我自己的问题,因为不存在正确答案。 GSAP将任何补间数据保存在实际的DOM元素上。尽管我将时间轴或补间设置为null,但它没有任何效果,因为当我补充相同的元素时,如果它具有GSAP之前保存的变量,它将检查DOM元素。
要解决此问题,我必须手动重置DOM元素变量。
如果这对您有用,请检查元素上的._gsTransform
变量。您将看到一些可以手动设置为0的x,y值或者您需要设置的其他任何值。