transform是CSS3中加入的控制元素变换的新属性(其实早在2003年的SVG1.1标准中就已经成为W3C标准,能够做为一个元素的属性使用),能够用它实现元素的位移(translate)、缩放(scale)、旋转(rotate)、扭曲(skew)。和transition
属性配合使用能够实现各类酷炫的动画效果。css
CSS提供了各类变换对应的属性方法html
.trans_translate { transform: translate(10px, 20px); } .trans_scale { transform: scale(1, 0.5); } .trans_rotate { transform: rotate(45deg); } .trans_skew { transform: skew(35deg); }
这样的使用方式能够让使用者方便理解,使用起来更加容易。但事实上transform的实现远不止看上去那么简单,transform的全部变换都是经过矩阵(matrix)来实现的node
WEB中的矩阵变换有2D和3D两种,本文主要描述matrix2d的状况css3
二维图形的变换可归纳为上述四种形式,而这四种形式均可以化为基本的矩阵运算:git
缩放、旋转变换都与参考点有关,上面进行的各类变换都是以原点为参考点的。若是相对某个通常的参考点(_xf_,_yf_)做缩放、旋转变换,至关于将该点移到坐标原点处,而后进行缩放、旋转变换,最后将(_xf_,_yf_)点移回原来的位置。切记复合变换时,先做用的变换矩阵在右端,后做用的变换矩阵在左端。github