如何正确地动画一个GSAP菜单
How to animate correctly a GSAP menu?
你好,当我关闭菜单并再次打开它时,我需要重置动画。我该怎么做呢?动画只在我第一次打开菜单时工作。
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.
谢谢你的帮助!
这个是你想要的结果吗?
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();
});
一些东西已经改变了,所以这里是细节:
- 首先,我没有看到
- 你基本上需要一个
TimelineMax
来操作。 - 根据JavaScript设置面板中的导入判断,我假设您对
TimelineMax
(和TimelineLite
)有一些了解。在任何情况下,TimelineLite
都是关于构建和管理TweenLite, TweenMax, TimelineLite和/或TimelineMax实例的序列和TimelineMax
是TimelineLite
的扩展,增加了更多的功能。 所以,在代码中发生的事情是, - 行
timeline.reversed() ? timeline.play() : timeline.reverse();
基本上是if
条件的缩短,花哨版本,它归结为个人偏好,而不是其他任何东西,没有性能增益或我所知道的任何东西。在正常的if
子句中,它应该这样写:-
if (timeline.reversed()) { timeline.play(); } else { timeline.reverse(); }
. - 正在检查的条件是
.reversed()
timeline
的属性。您会注意到,在初始化new TimelineMax(...)
时,我在其上设置了reversed: true
属性。它所做的是,在将所有的补间添加到timeline
之后,它的行为就好像timeline
被立即反转了,这样timeline
的方向就被翻转了。在我上面分享的TimelineMax
文档链接中阅读更多关于它的信息。.play()
和.reverse()
方法是非常自解释的,因为它们分别使timeline
向前或向后。
-
hidden
类的需要,所以我已经从我的解决方案中删除了它。另外,on
类在.menu-section
元素上切换似乎也相当不必要。我删除了它,但保留了.menu-section
CSS规则定义的属性。下面是有趣的部分,JavaScript。TimelineMax
实例已经被初始化,渐变已经添加到它,然后,点击.menu-toggle
按钮元素,这个时间轴要么播放,要么反转。相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 使用一个通用缓动函数 (GSAP) 运行多个补间
- 如何正确地动画一个GSAP菜单
- Gsap只能导入一个或多个SVG