CSS动画2D

2D 转换

首先要了解2D-transform的坐标系统

设置旋转中心点
transform-origin:bottom center

Paste_Image.png
  • translate()--平移

根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。
translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。
transform: translate(50px,100px);

  • rotate()--旋转

rotate()方法,在一个给定度数顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转。
transform: rotate(30deg);

  • scale()--缩放

scale()方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数;
transform: scale(2,3);

  • skew()--倾斜

语法
transform:skew(<angle> ,<angle>);
包含两个参数值,分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。

  • skewX(<angle>);表示只在X轴(水平方向)倾斜。
  • skewY(<angle>);表示只在Y轴(垂直方向)倾斜。
  • matrix()

matrix()方法和2D变换方法合并成一个。
matrix 方法有六个参数,包含旋转,缩放,移动(平移)和倾斜功能。

重头戏来了

transform: matrix(a,b,c,d,e,f);

实际上,这6参数,对应的矩阵就是:


Paste_Image.png

转换公式:

Paste_Image.png

matrix的偏移
transform: matrix(1, 0, 0, 1, 30, 30); /* a=1, b=0, c=0, d=1, e=30, f=30 */

假设矩阵中心点为(x,y)=(0,0),变换后:

x坐标就是ax+cy+e = 10+00+30 =30
y坐标就是bx+dy+f = 00+10+30 =30

也就是说偏移只与后面两个参数有关
注意:这里面e,f参数的单位可以省略

matrix中的缩放
transform: matrix(s, 0, 0, s, 0, 0);

x' = ax+cy+e = sx+0y+0 = sx;
y' = bx+dy+f = 0
x+sy+0 = sy;

matrix中的旋转
transform: matrix(cosθ,sinθ,-sinθ,cosθ,0,0)

x' = xcosθ-ysinθ+0 = xcosθ-ysinθ
y' = xsinθ+ycosθ+0 = xsinθ+ycosθ

matrix中的拉伸

matrix(1,tan(θy),tan(θx),1,0,0)

x' = x+ytan(θx)+0 = x+ytan(θx)
y' = xtan(θy)+y+0 = xtan(θy)+y

了解更多

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 5,846评论 0 4
  • 1. 关于诊断X线机准直器的作用,错误的是()。 (6.0 分) A. 显示照射野 B. 显示中心线 C. 屏蔽多...
    我们村我最帅阅读 13,691评论 0 5
  • Transform字面上就是变形,改变的意思。在CSS3中transform主要包括以下几种:旋转rotate、扭...
    hzrWeber阅读 22,201评论 0 19
  • 有哪一个地方可以容纳他们 前不久和朋友约好,去了西单,在经过四号线地铁时,我亲眼看到这一幕发生,一位年迈的老母亲拉...
    沫小鱼阅读 3,142评论 0 1
  • 我自己说的做事多考虑一下, 但是一关于你,我真的冷静不下来, 我承认这是我的性格缺陷, 真的,张,只要是你的事,我...
    那可是我的心脏啊阅读 2,844评论 0 1