CSS3 提供了transition 过渡
、transform 变换
和animation 动画
来实现页面中的一些样式转化,这篇文章会对这几个属性作简单的介绍,而后比较一下 CSS3 动画和 JS 动画哪一个性能更好。css
transition容许css的属性值在必定的时间区间内平滑地过渡,语法以下:性能
transition : transition-property transition-duration transition-timing-function transition-delay [, ...]
none
,all
或者特定的属性。s(秒)
或者 ms(毫秒)
。ease|linear|ease-in|ease-out|ease-in-out|cubic-bezier(自定义时间曲线)
。transition-duration
,可是能够为负数。DEMO:http://codepen.io/CodingMonkeyzh/pen/ZGBRVe动画
transform 分为2D 和 3D,这里暂时只介绍比较经常使用的2D transform,其主要包含如下几种变换:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix,语法以下:code
transform: rotate | scale | skew | translate |matrix;
deg 度
,正数表示顺时针旋转,负数表示逆时针旋转。0~n
,小于1
时表示缩小,反之表示放大。例如scale(0.5, 2)
表示水平方向缩小1倍,垂直方向放大1倍, 另外,也能够经过scaleX
或者scaleY
对一个方向进行设置。rotate
同样都是deg 度
。例如 skew(30deg, 10deg)
表示水平方向倾斜30度,垂直方向倾斜10度。translate(x,y)
水平方向和垂直方向同时移动(也就是X轴和Y轴同时移动);translateX(x)
仅水平方向移动(X轴移动);translateY(Y)
仅垂直方向移动(Y轴移动)。CSS3 中的 animation 是经过一个叫Keyframes 关键帧
的玩意来控制的,他的命名是由"@keyframes"开头,后面紧接着是这个“动画的名称”加上一对花括号“{}”,括号中就是一些不一样时间段样式规则,有点像咱们css的样式写法同样。对于一个"@keyframes"中的样式规则是由多个百分比构成的,如“0%”到"100%"之间,语法以下:orm
@keyframes IDENT { from { Properties: Properties value; } Percentage { Properties: Properties value; } to { Properties: Properties value; } } 或者所有写成百分比的形式: @keyframes IDENT { 0% { Properties: Properties value; } Percentage { Properties: Properties value; } 100% { Properties: Properties value; } }
animation和transition同样有本身相对应的属性,那么在animation主要有如下几种:animation-name;animation-duration;animation-timing-function;animation-delay;animation-iteration-count;animation-direction;animation-play-state。下面对其中的一些属性进行解释:get
keyframes
建立的动画名,默认值为none
,当值为none
时,将没有任何动画效果。若是咱们要同时附几个animation
给一个元素,只要用逗号,
隔开便可。1
,若是要进行无限循环,只要设为infinite
便可。normal
,若是设置为normal时,动画的每次循环都是向前播放;另外一个值是alternate
,他的做用是,动画播放在第偶数次向前播放,第奇数次向反方向播放。DEMO 1: http://codepen.io/CodingMonkeyzh/pen/mJOKZYanimation