【发布时间】:2015-06-19 23:40:53
【问题描述】:
我想摆脱 jQuery 的动画,所以我一直在使用 GSAP。我试图弄清楚如何在一个元素及其子元素上触发多个动画。基本上,我想给#navicon 一个“720 cork”效果,它工作正常,并将图标淡入/切换到这个根本不工作的#navicon 容器的孩子。
如果我只使用 jQuery,我可能会根据需要添加多个类并使用它们来触发一些 CSS3 转换。但是,GSAP 似乎是really fast。
我已经非常彻底地阅读了 GSAP 文档。而且我看到了如何用“时间线”链接补间,但我不确定如何根据一个事件在不同的元素上触发多个补间。
到目前为止,这是我的代码:
var toggleMobiMenu = function() {
$('#navicon').on('click touchstart', function() {
TweenMax.to($(this), 0.5, { rotationY: 720, rotationX: -720 })
.to($(this).find('#open'), 0.5, { opacity: 0 })
.to($(this).find('#closed'), 0.5, { opacity: 1 });
});
}
toggleMobiMenu();
和here 是一样的。有谁知道如何同时补间所有这 3 个元素?
【问题讨论】:
-
嘿@HelloWorld,我下面的建议有帮助吗?
-
@TahirAhmed 我最终以另一种方式解决了这个问题,但感谢您发现我愚蠢的错误标签“#navicon-open”和“navicon-closed”!
-
我认为您错过了阅读我的回答的 Snippet 部分,其中我提到了
TimelineMax;) -
因为在您的解决方案中,我相信您仍然没有充分利用它。每次点击时,您都会创建一个新的
TimelineLite实例。相反,您应该有一个预定义的实例,您只能播放 forward 或 backward。 -
另外,您似乎只是使用
to方法添加到时间线的动画队列中,如上所述,实际上应该只有一个时间线实例已经定义在点击处理程序的范围之外并且只在点击处理程序范围内使用。
标签: javascript jquery gsap