CSS3 Tweens和Matrix

时间:2012-02-14 08:09:44

标签: javascript css3

我在CSS中放置了一些关键帧动画,它们将屏幕一侧的div设置为另一侧的动画,沿途稍微旋转。我发现关键帧方法是限制性的,因为我希望能够有很多变化进入一个大的序列。作为示例,变化可以不仅从左到右,从右到左,而且从上到下等等。为了增加问题的复杂性,我需要能够改变这个序列并保持每个动画之间的连续性。

序列本身应该能够以任何顺序运行并重置。

例如,如果我想以100px阶段移动div:

left (100px), up (100px), left (100px) and then down(100px)

下次我可能希望序列如下(再次100px):

left, down, right, up

我的想法是,通过使用JavaScript动态编写动画或者使用类似CSS3 Matrix的东西,可以更好地实现这一点。到目前为止,我已经找到了左右这些简单的东西,但我无法弄清楚如何添加旋转。这似乎是一个非常好的起点:

http://www.useragentman.com/blog/2011/01/07/css3-matrix-transform-for-the-mathematically-challenged/

http://www.eleqtriq.com/2010/05/css-3d-matrix-transformations/

也看了看这个:

http://tweenjs.com/

我的想法是,a)通过采用CSS Matrix方法,我是否过于复杂?有什么比这更简单的了吗?和b)如何使用CSS Matrix或任何其他方法同时实现旋转和移动?

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

如果你想做动态动画,那么你应该使用JavaScript进行动画制作。

至于如何将翻译与轮换相结合,答案就在useragentman帖子中(顺便说一下,这是对css矩阵的一个非常好的介绍。)

获取您想要实现的旋转角度(以弧度表示)并创建以下矩阵:

Cos(angle), -Sin(angle), 0
Sin(angle), Cos(angle), 0
0,            0,        1

然后为x和y中的(可能是2D)运动创建以下矩阵。

0,0,X
0,0,Y
0,0,1

然后将它们相乘(或采用矩阵术语中的点积)。这里有一个方便的matrix multiplier,有关如何创建点积的详细信息也在同一篇文章中。

请注意,这些是转换(不是位置更改),转换不会影响效果页面位置。