Holla,当我关闭菜单并再次打开它时,我需要重置动画。我怎样才能做到这一点?动画仅在我打开菜单时第一次起作用。
CSSPlugin.defaultTransformPerspective = 600;
TweenMax.staggerFrom('ul#menu li', 1.5, {rotationX:-90, transformOrigin:"50% 0%", ease:Elastic.easeOut}, 0.4);
以下是代码:http://codepen.io/hafsadanguir/pen/qOdaab。
感谢您的帮助!
答案 0 :(得分:1)
this 您所追求的结果是什么?
<强> JavaScript的: 强>
CSSPlugin.defaultTransformPerspective = 600;
var toggleMenu = $('.menu-toggle');
var logo = $('#logo');
var logotitle = $('#logotitle');
var listItems = $('ul#menu li');
var timeline = new TimelineMax({ paused: true, reversed: true });
timeline.fromTo([logo, logotitle], 0.6, { top: 300 }, { top: -50, ease: Power2.easeInOut });
timeline.staggerFromTo(listItems, 1.2, { autoAlpha: 0, rotationX: -90, transformOrigin: '50% 0%' }, { autoAlpha: 1, rotationX: 0, ease: Elastic.easeOut.config(1, 0.3) }, 0.1, 0.3);
toggleMenu.on('click', function() {
$(this).toggleClass('on');
timeline.reversed() ? timeline.play() : timeline.reverse();
});
有些事情发生了变化,所以这里有详细信息:
hidden
课程的需要,所以我已将其从我的解决方案中删除。on
元素上的.menu-section
类切换似乎也是不必要的。我删除了它,但保留了.menu-section
CSS规则中定义的属性。TimelineMax
来操作。 TimelineMax
(和TimelineLite
)的所有内容。在任何情况下,TimelineLite
都是关于构建和管理TweenLite,TweenMax,TimelineLite和/或TimelineMax实例的序列,而TimelineMax
是TimelineLite
的扩展名,增加更多的力量。TimelineMax
实例已初始化,补间已添加到其中,然后在单击.menu-toggle
按钮元素时,此时间轴为播放或颠倒。timeline.reversed() ? timeline.play() : timeline.reverse();
行基本上是if
条件的简短版本,它更多地归结为个人偏好,没有任何表现或任何我所知道的。在正常的if
子句中,它将被写成如下:
if (timeline.reversed()) { timeline.play(); } else { timeline.reverse(); }
。timeline
的 .reversed()
属性。您会注意到在初始化new TimelineMax(...)
时,我在其上设置了reversed: true
属性。它的作用是,在将所有补间添加到timeline
之后,它的行为就好像timeline
被立即反转,以便timeline
的方向被翻转。在我上面分享的TimelineMax
文档链接中了解更多相关信息。.play()
和 .reverse()
方法非常明确,因为它们使timeline
转转发< / em>或向后。希望这有帮助。