CSS3的新属性的一下总结

时间:2022-07-20 16:42:47

阮一峰:http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html

由于自己经常搞混:animation,transition,transform这三个属性,今天就总结一下
首先是:
transform:和css3一些基本属性,例如:box-shadow、border-radius、background-position等等的这些属性是一个类型的,他可以做2D、3D,旋转、放大、缩小等的一些变化
动画类:

  animation & transition
  
  而这两个是做动画类的属性;

transition的使用注意

(1)目前,各大浏览器(包括IE 10)都已经支持无前缀的transition,所以transition已经可以很安全地不加浏览器前缀。

(2)不是所有的CSS属性都支持transition,完整的列表查看这里,以及具体的效果

(3)transition需要明确知道,开始状态和结束状态的具体数值,才能计算出中间状态。比如,height从0px变化到100px,transition可以算出中间状态。但是,transition没法算出0px到auto的中间状态,也就是说,如果开始或结束的设置是height: auto,那么就不会产生动画效果。类似的情况还有,display: none到block,background: url(foo.jpg)到url(bar.jpg)等等。

transition的局限

transition的优点在于简单易用,但是它有几个很大的局限。

(1)transition需要事件触发,所以没法在网页加载时自动发生。

(2)transition是一次性的,不能重复发生,除非一再触发。

(3)transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。

(4)一条transition规则,只能定义一个属性的变化,不能涉及多个属性。

CSS Animation就是为了解决这些问题而提出的。

transition

@-webkit-keyframes rainbow {
0% { background: #c00; }
50% { background: orange; }
100% { background: yellowgreen; }
} @keyframes rainbow {
0% { background: #c00; }
50% { background: orange; }
100% { background: yellowgreen; }
}
div:hover{
transition: 1s rainbow
}