变形有rotate旋转、scale缩放、translate位移、skew倾斜、matrix矩阵变形、perspective透视几种操作,通过例子来了解各个操作
1)旋转transform:rotate();angle取值有:角度值deg,弧度值rad,梯度gard,转/圈turn,正数值代表顺时针旋转,反之逆时针
如果对元素本身或者元素设置了perspective值(用于设置查看者的位置),那么rotate3d()函数可以实现一个3维空间内的旋转
rotateX(angele),相当于rotate3d(1,0,0,angle)指定在3维空间内的X轴旋转
rotateY(angele),相当于rotate3d(0,1,0,angle)指定在3维空间内的Y轴旋转
rotateZ(angele),相当于rotate3d(0,0,1,angle)指定在3维空间内的Z轴旋转
2)缩放transform:scale([,]);表示使元素在X轴和Y轴同时缩放
表示缩放倍数,可以是正数,负数和小数。负数是先翻转元素然后再缩放。包含两个参数,如果缺少第二个参数,那么第二个参数的值等于第一个参数。
scaleX():表示只在X轴(水平方向)缩放元素。
scaleY():表示只在Y轴(垂直方向)缩放元素。
scaleZ():表示只在Z轴缩放元素。前提是元素本身或者元素的父元素设定了透视值
同样的,有scale3d(x,y,z)
3)位移transform:translate([,]);表示使元素在X轴和Y轴同时移动
表示位移量。包含两个参数,如果省略了第二个参数则第二个参数为0;如果参数为负,则表示往相反的方向移动。
translateX();表示只在X轴(水平方向)移动元素。
translateY();表示只在Y轴(垂直方向)移动元素。
translateZ();表示只在Z轴移动元素,前提是元素本身或者元素的父元素设定了透视值
同样的,有transform(x,y,z)
4)倾斜transform:skew([,]);包含两个参数值,分别表示X轴和Y轴倾斜的角度,取值类型为角度值deg
如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。
skewX();表示只在X轴(水平方向)倾斜
skewY();表示只在Y轴(垂直方向)倾斜
5)矩阵变形transform:matrix(,,,,,);
matrix()是矩阵函数,以一个含六值的(a,c,e,b,d,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[acebdf]变换矩阵,其中c和e用正弦或余弦值表示
这六个参数实际上是一个3*3的矩阵:
同样的,可用matrix3d定义3D转换,其是一个使用了16个值的4x4矩阵
6)透视transform:perspective(length);设置查看者的位置,并将可视内容映射到一个视锥上,继而投影到一个2D视平面上透视还可以直接定义成属性perspective:,但其是设置所有的子元素有一个共同的透视值
其对于3D变换来说至关重要,如果不指定透视,则Z空间中的所有点将平铺到同一个2D视平面中,并且变换结果中将不存透视深概念。作用于元素的子元素。
如下两种样式定义,结果相同
7-1)transform-origin
该属性提供2个参数值,第一个用于横坐标,第二个用于纵坐标;如果只提供一个,该值将用于横坐标,纵坐标将默认为50%。
percentage:用百分比指定坐标值。可以为负值。
length:用长度值指定坐标值。可以为负值。
leftcenterright是水平方向取值,而topcenterbottom是垂直方向的取值。
7-2)transform-style
设置内嵌的元素在3D空间如何呈现。有两个值:flat:所有子元素在2D平面呈现;preserve-3d:保留3D空间
7-3)perspective-origin
该属性定义在X轴和Y轴的3D元素。这个属性允许你改变3D元素的底部位置。定义时的perspective-origin属性,它是一个元素的子元素,透视图,而不是元素本身。使用此属性必须和perspective属性一起使用,只影响3D转换的元素
left,centerright是水平方向取值,而topcenterbottom是垂直方向的取值。
7-4)backface-visibility
该属性可用于隐藏内容的背面。默认情况下,背面可见,这意味着即使在翻转后,变换的内容仍然可见。但当backface-visibility设置为hidden时,旋转后内容将隐藏,因为旋转后正面将不再可见。取值有:
visible:默认值,旋转的时候背景可见。
hidden:旋转的时候背景不可见。
过渡transition是一个复合属性,可以同时定义transition-property、transition-duration、transition-timing-function、transition-delay子属性值
页面结构如上,根据例子熟悉这些属性
1.综合transition可同时设置四个子属性值
2.transition-property需要过渡的属性all|none|[,]
5.transition-timing-function设置动画的过渡效果,默认值ease,取值有
ease:缓解效果,等同于cubic-bezier(0.25,0.1,0.25,1.0)函数,既立方贝塞尔
linear:线性效果,等同于cubic-bezier(0.0,0.0,1.0,1.0)函数
ease-in:渐显效果,等同于cubic-bezier(0.42,0,1.0,1.0)函数
ease-out:渐隐效果,等同于cubic-bezier(0,0,0.58,1.0)函数
ease-in-out:渐显渐隐效果,等同于cubic-bezier(0.42,0,0.58,1.0)函数
cubic-bezier:特殊的立方贝塞尔曲线效果
见效果图
1.综合animation,可同时定义多个子属性
2.animation-name动画名称,需与@keyframes中设置的一致
5.animation-timing-function动画的过渡类型,取值有:
ease:缓解效果,等同于cubic-bezier(0.25,0.1,0.25,1.0)函数,既立方贝塞尔。
linear:线性效果,等同于cubic-bezier(0.0,0.0,1.0,1.0)函数。
ease-in:渐显效果,等同于cubic-bezier(0.42,0,1.0,1.0)函数。
ease-out:渐隐效果,等同于cubic-bezier(0,0,0.58,1.0)函数。
ease-in-out:渐显渐隐效果,等同于cubic-bezier(0.42,0,0.58,1.0)函数。
step-start:马上转跳到动画结束状态。
steps([,[start|end]]):第一个参数number为指定的间隔数,即把动画分为n步阶段性展示,第二个参数默认为end,设置最后一步的状态,start为结束时的状态,end为开始时的状态,若设置与animation-fill-mode的效果冲突,而以animation-fill-mode的设置为动画结束的状态。
cubic-bezier(,,,):特殊的立方贝塞尔曲线效果。
值得注意的是steps中number参数的意义,关于steps的参数解析
6.animation-iteration-count:|infinite;指定对象动画循环播放的次数。infinite为无限循环
7.animation-direction指定对象动画运动的方向
normal:正常方向,默认。
reverse:动画反向运行,方向始终与normal相反。(FF14.0.1以下不支持)
alternate-reverse:动画从反向开始,再正反方向交替运动,运动方向始终与alternate定义的相反。(FF14.0.1以下不支持)
none:默认值。不设置对象动画之外的状态
forwards:结束后保持动画结束时的状态,但当animation-direction为0,则动画不执行,持续保持动画开始时的状态
backwards:结束后返回动画开始时的状态
both:结束后可遵循forwards和backwards两个规则
9.animation-play-state:running|paused检索或设置对象动画的状态,running为默认值