一、变形
应用2D或3D变换
transform: none | <fn>+; /* 默认为none */
- 所有变形只对
block
元素有效。
-
<fn>
的书写顺序会影响显示的效果。
- 变形兼容性:IE8-不支持;IE9和Opera只支持2D变换,IE9需要前缀
-ms-
;Chrome和Safari需要前缀-webkit-
。
<fn>之移动
translate(<tx> [ ,<ty> ]?) /* 2D */
translate3d(<tx>, <ty>, <tz>) /* 3D */
/* 沿x轴移动<tx> = <len-%>,
沿y轴移动<ty> = <len-%>,
沿z轴移动<tz> = <length>。
*/
- 可分解为
translateX(<tx>)
、translateY(<ty>)
、translateZ(<tz>)
。
-
<tx>
、<ty>
、<tz>
分别表示元素自原点向左、向下、向外的位移,默认值为0
;负值表示反向移动。
- 参照物是元素自身的宽高。
<fn>之旋转
rotate(<angle>) /* 2D,围绕z轴旋转 */
rotate3d(<x>, <y>, <z>, <angle>) /* 3D,以(x,y,z)与原点的连线为轴旋转 */
-
rotate3d
可分解为rotateX(<x-angle>)
、rotateY(<y-angle>)
、rotateZ(<z-angle>)
。
-
<angle>
的单位为deg
,表示旋转的角度;正值为顺时针旋转,负值为逆时针旋转。
<fn>之倾斜
skew(<x-angle> [ ,<y-angle> ]?) /* 只有2D */
- 可分解为
skewX(<x-angle>)
、skewY(<y-angle>)
。
-
<x-angle>
表示y轴向x轴倾斜的角度,单位为deg
,正值为逆时针倾斜。
-
<y-angle>
表示x轴向y轴倾斜的角度,单位deg
,正值逆时针,默认值为0
。
<fn>之缩放
scale(<x-num>[,<y-num>]?) /* 2D,y值缺省时应用x值 */
scale3d(<x-num>, <y-num>, <z-num>) /* 3D */
- 可分解为
scaleX(<x-num>)
、scaleY(<y-num>)
、scaleZ(<z-num>)
。
-
num
为缩放系数,不可为负值。
变形原点
transform-origin: <x> <y>? <z>?; /* 省略<z>表示2D原点 */
/* x坐标<x> = left | center | right | <len-%>,
y坐标<y> = top | center | bottom | <len-%>,
z坐标<z> = <length>,
<len-%> = <length> | <%>。
*/
-
<x>
和<y>
的默认值为50%
或center
。
-
<z>
的默认值为0
。
子元素是否保留3D样式
transform-style: flat | preserver-3d;
3D透视
perspective: none | <num>; /* 透视距离 */
perspective-origin: <x> <y>?; /* 透视角度 */
-
perspective
是人眼到z=0平面的距离,默认值为none
或0
。
-
<num>
是一个数字,以像素(px)计。
-
perspective-origin
定义视图的底部位置(z=0平面),值参考transform-origin
。
- 目前主流浏览器都不支持透视,只有Chrome和Safari支持带
-webkit-
前缀的。
元素背面可见
backface-visibility: visible | hidden;
- 默认值为
visible
,即背面可见。
- 用于不希望看到旋转元素的背面。
- IE9-和Opera14-不支持,Chrome、Safari和Opera15+需要加
-webkit-
前缀。
二、过渡
指定应用过渡效果的CSS属性
transition-property: none | <prop>#;
/* <prop> = all | <IDENT> */
- 默认值为
all
,表示所有属性都会应用过渡效果。
-
none
表示不应有过渡效果,属性值会在瞬间变化。
-
<IDENT>
是属性名称,由小写字母、数字、下划线和连接符组成,不能由数字开头。
过渡持续时长
transition-duration: <time>#;
-
<time>
表示过渡属性从旧值变到新值需要的时间,单位为s
或ms
。
- 默认值为
0
,表示无过渡效果,属性值瞬间变化完成;不接受负值。
延迟过渡时长
transition-delay: <time>#;
-
<time>
表示过渡开始前要等待的时间,单位为s
或ms
。
- 默认值为
0
,表示不等待、直接开始过渡。
- 负值会使过渡立即开始,并跳过指定时长的过渡动画。
过渡的速度曲线
transition-timing-function: <timing-fn>#;
/* <timing-fn> = linear | <cubic-bezier-fn> | <step-fn> | <frames-fn>,
<cubic-bezier-fn> = ease | ease-in | ease-out | ease-in-out | cubic-bezier(<n>,<n>,<n>,<n>),
<step-fn> = step-start | step-end | steps(<int> [ , [ start | end ] ]?),
<frames-fn> = frames(<int>)。
*/
- 默认值是
ease
,相当于cubic-bezier(.25, .1, .25, .1)
,表示两头慢中间快。
-
linear
是匀速曲线,相当于cubic-bezier(0, 0, 1, 1)
。
-
ease-in
表示开头慢,ease-out
表示结束慢。
-
ease-in-out
也表示两头慢,但变化幅度更大一些,相当于cubic-bezier(.42, 0, .58, 1)
。
属性简写
transition: [ none | <prop> ] || <time> || <timing-fn> || <time>;
- 第一个
<time>
代表transition-duration
,第二个<time>
代表transition-delay
。
- 过渡支持多值的写法,用逗号隔开,可以给多个不同的CSS属性应用不同的过渡效果。上述所有支持多值的属性,其值都是一一对应各个
transition-property
的。
- IE9-不支持过渡,Chrome和Safari需要在所有属性前加
-webkit-
前缀。
三、自定义动画
动画名称
animation-name: <name>#;
/* <name> = none | <IDENT> */
动画持续时长
animation-duration: <time>#;
延迟动画时长
animation-delay: <time>#;
动画的速度曲线
animation-timing-function: <timing-fn>#;
- 参考
transition-timing-function
。
动画执行次数
animation-iteration-count: <count>#;
/* <count> = infinite | <num> */
- 默认值为
1
,表示动画只执行一次。
-
infinite
表示无限执行;<num>
不可为负值。
动画执行方向
animation-direction: <direction>#;
/* <direction> = normal | reverse | alternate | alternate-reverse */
- 默认值为
normal
,表示正向执行(从0%
执行到100%
)。
-
alternate
表示正向往返执行(从0%
到100%
再到0%
),<timing-fn>
也会跟着往返。
-
reverse
与normal
相反,alternate-reverse
与alternate
相反。
动画执行状态
animation-play-state: <play-state>#;
/* <play-state> = running | paused */
- 默认值为
running
,表示动画现在的状态是执行。
-
paused
是暂停的意思,所以再次开始时是从暂停处开始的。
动画执行前后的样式
animation-fill-mode: <fill-mode>#;
/* <fill-mode> = none | forwards | backwards | both */
- 默认值为
none
,表示动画执行前后不应用任何样式。
-
forwards
表示动画结束后保持最后一帧的样式。
-
backwards
表示动画开始前保持第一帧的样式。
-
both
表示同时应用forwards
和backwards
。
关键帧
@keyframes <identifier> {
[ <keyframes-selector> {<css-styles>;} ]*
}
/* <keyframes-selector> = [ from | to | <%> ]# */
属性简写
animation: [ <name> || <time> || <timing-fn> || <time> || <count> || <direction> || <fill-mode> || <play-state> || [ none | <identifier> ] ]#;
- 第一个
<time>
代表animation-duration
,第二个<time>
代表animation-delay
。
-
animation
与transition
的区别:前者直接执行,后者需要触发才执行。
- 动画支持多值的写法,用逗号隔开,可以同时设置不同的动画。上述所有支持多值的属性,其值都是一一对应各个
animation-name
的。
- IE9-不支持自定义动画,Chrome和Safari需要在所有属性前加
-webkit-
前缀。
网友评论