GSAP的高级阶梯动画允许你定义一个grid,假设数组中的所有元素均匀间隔。但如果有间隙、每行数量不同等,如上例所示,该怎么办?也许它根本不像一个网格。请注意,由于distributeByPositions()辅助函数,本示例中的阶梯动画仍然流畅。

它是如何工作的?

在JS面板中,你会找到一个distributeByPosition()方法,可以将其复制到你的项目中。然后,只需将其包装在通常用于高级阶梯动画的配置对象周围,它会返回一个GSAP高级阶梯功能理解的函数。阶梯动画将基于DOM元素的x/y位置分布,内部使用getBoundingClientRect()。元素可以在屏幕上的任何位置,它会测量距离并相应地安排阶梯动画。

示例代码:

gsap.to(".box", {
  duration: 1,
  scale: 0.1,
  y: 40,
  ease: "power1.inOut",
  stagger: distributeByPosition({
    from: "center",
    amount: 2
  })
});

配置

配置对象可能包含以下任何可选属性:

为什么这不是内置在GSAP中?为什么需要一个辅助函数?

主要是因为文件大小的考虑。grid功能似乎涵盖了绝大多数用例,而GSAP被构建为允许这些高级功能在需要适应此类边缘情况时在外部利用。

如果你需要任何帮助,请在我们的论坛发帖。祝你动画愉快!