CSS3: transition transform 学习笔记

Posted by 任平生 on April 7, 2011
.box{
	-webkit-transition:background-color 2s ease-out; 
	-moz-transition:background-color 2s ease-out;
}

之所以将 transition 写在 .box 而不是 .box:hover 是因为当写在 :hover 中时, transition-timing-function 无法控制离开时的动画速度

transition-timing-function: [ liner | ease | ease-in | ease-out | ease-in-out 
| cubic-bezier(n,n,n,n) ]
  • liner 匀速运动;

  • ease 先慢后快再慢 【默认值】

  • ease-in 先慢后快

  • ease-out 先快后慢

  • ease-in-out 先慢后平再慢

  • cubic-bezier(n,n,n,n) 贝塞尔曲线 n 取值 0~1

via: developer.mozilla.org/en/docs/Web/CSS/transition-timing-function

transition 目前在所有浏览器中都需要加前缀才能使用(-webkit,-moz,-o),ie9 目前尚不支持此属性

img:hover{
	-moz-transform:rotate(20deg) skew(30deg) translate(10px,10px) scale(2,1); 
	-moz-transform-origin:left center;
}
  • rotate(deg) 旋转
  • skew(x-deg, y-deg) 倾斜(变形)
  • translate(x, y) 位移
  • scale(x,y) 拉伸

其中如果(x,y) 只定义一个值的话,那么 x=y

  • chrome 中 inline 元素不支持 transform
  • ie9 支持 transform,需要 -ms 前缀
  • ie9 中 inline 元素也可以使用transform
transform-origin:left center;

用于控制 transform 的原点位置,可以是诸如 left right 的值也可以是百分比或具体的pxem

区分

  • transition 是过渡动画; 用来控制一些CSS属性值改变的快慢等

  • transform 是变换;一般是形状的变化 or 位置的变化,可以类比Photoshop 中的 Ctrl+T,有拉伸、扭曲、变形、偏移

transformanimation 的区别是, animation 可以在 keyframes中详细地定义动画过程中的变换的参数,比如转动一半时间时 scale(2),转动完成时 scale(1)

demo:
http://rpsh.net/demo/note/css3_transform.html

参考链接:

http://www.w3.org/TR/css3-transitions/

http://www.w3.org/TR/css3-2d-transforms/

http://www.w3.org/TR/css3-3d-transforms/

http://www.w3.org/TR/css3-animations/