matrix和matrix3d实现的。前者是2D平面的移动,后者是3D变换。设置对检索对象的转换。其中分为2D Transform和3D Transform两部分。2D Transform取值具体如下:
matrix():以一个含6个值的(a,b,c,d,e,f)变换矩阵的形式制定一个2D变换,相当于直接应用[a,b,c,d,e,f]变换矩阵。translate():指定对象的2D平移。第一个参数对应x轴,第二个参数对应y轴,若第二个参数没有,默认为0。translateX():指定对象X轴(水平方向)的平移。translateY():指定对象Y轴(垂直方向)的平移。rotate():指定对象的2D旋转,需要先定义transform-origin属性。scale():指定对象的2D缩放。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则默认取第一个参数的值。Zoom是改变视图的显示大小,scale是改变图形尺寸的大小!scalex():指定对象X轴的(水平方向)缩放。scaley():指定对象Y轴的(垂直方向)缩放。skew():指定对象的斜切扭曲。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则默认为0。skewx():指定对象X轴的(水平方向)扭曲。scaley():指定对象Y轴的(垂直方向)扭曲。3D Transform同理,具体取值如下:
matrix3d():以一个4x4矩阵的形式指定一个3D变换。translate3d():指定对象的3D位移。第1个参数对应X轴,第2个参数对应Y轴,第3个参数对应Z轴,参数不允许省略。translateZ():指定对象Z轴的平移。rotate3d():指定对象的3D旋转角度,其中前3个参数分别表示旋转的方向x,y,z,第4个参数表示旋转的角度,参数不允许省略。rotateX():指定对象在x轴上的旋转角度。rotateY():指定对象在y轴上的旋转角度。rotateZ():指定对象在z轴上的旋转角度。scale3d():指定对象的3D缩放。第1个参数对应X轴,第2个参数对应Y轴,第3个参数对应Z轴,参数不允许省略。scaley():指定对象Y轴的(垂直方向)缩放。scalez():指定对象的z轴缩放。perspective():指定透视距离。transform几个值的先后问题:先旋转(改变坐标系),再通过translateZ进行定位。
transform的matrix()是其他变换的基础,可以通过配置参数扩展为其他的变换。写法如下:
transform: matrix(a,b,c,d,e,f);
其对应的矩阵如下:

则初始坐标x,y可以构成一个3*1的矩阵(x,y,1),两个矩阵相乘,可以算出变换后的坐标x',y',得出一个3*1的矩阵(x',y',1)。如下图所示:

此时,变换后的坐标即为 x'= ax+ cy+ e, y'= bx+ dy +f。
因此,几个矩阵变换的转换如下:
transform: matrix(1, 0, 0, 1, tx, ty) == transform: translate(tx,ty)transform: matrix(sx, 0, 0, sy, 0, 0) == transform: scale(sx,sy)transform: matrix(cosθ,sinθ,-sinθ,cosθ,0,0) == transform: rotate(θ)transform: matrix(1,tan(θy),tan(θx),1,0,0) == transform: skew(tx,ty)matrix3d同理,为一个4*4的矩阵定义一个3D变换的序列。
transform-origin对应的点,若对该属性重新设置的时候,矩阵相关计算的中心店也改变了,例如-webkit-transform-origin: bottom left;将坐标中心点移到左下角,transform-origin: 50px 70px;将坐标移动到距离左侧50px,顶部70px的地方。此时(30,30)为图中所示的点。
有两个参数值,一个是横坐标,一个是纵坐标。如果只提供一个,将用于横坐标,纵坐标默认为50%。
默认值为50% 50%,可以取值如下:
<percentage>:百分比制定坐标,可以为负。<length>:用长度指定坐标,可以为负。left:指定原点的横坐标为left。center:指定原点的横坐标为center。right:指定原点的横坐标为right。top:指定原点的纵坐标为top。center:指定原点的纵坐标为center。bottom:指定原点的纵坐标为bottom。transform-style属性。取值上有preserve-3d和flat两个值。flat为默认值,表示所有子元素在2D平面呈现,preserve-3d表示在三维空间内。perspective有两种书写,一种是用在舞台元素上(该动画元素的父辈元素上),另一种是用在当前的动画元素上,与transform其他属性在一起。
.stage {
perspective: 600px;
}
#stage .box {
transform: perspective(600px) rotateY(45deg);
}
backface-visibility属性,不能在其父元素上,因为该元素不可继承。[ none | <single-transition-property> ] || <time> || <single-transition-timing-function> || <time>检索或设置对象中过渡的动画类型。默认为ease,有如下几种取值:
linear:线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)ease:平滑过渡。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0)。ease-in:由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0)。ease-out:由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0)。ease-in-out:由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)。steps:接受两个参数的步进函数。第一个参数必须为正整数,指定函数的步数。第二个参数取值可以是start或end,指定每一步的值发生变化的时间点。第二个参数是可选的,默认值为end。step-start:等同于 steps(1, start)。step-end:等同于 steps(1, end)。cubic-bezier:特定的贝塞尔曲线类型,4个数值需在[0, 1]区间内。
<single-animation-name> || <time> || <single-animation-timing-function> || <time> || <single-animation-iteration-count> || <single-animation-direction> || <single-animation-fill-mode> || <single-animation-play-state>normal:正常方向reverse:反方向运行alternate:动画先正常运行再反方向运行,并持续交替运行alternate-reverse:动画先反运行再正方向运行,并持续交替运行none:不设置对象动画之外的状态forwards:设置对象状态为动画结束时的状态backwards:设置对象状态为动画开始时的状态both:设置对象状态为动画结束或开始的状态