CSS3 - animation - 说中
定义keyframes
@keyframes colorchange { 0% { background-color: #00F; /* from: blue */ } 25% { background-color: #F00; /* red */ } 50% { background-color: #0F0; /* green */ } 75% { background-color: #F0F; /* purple */ } 100% { background-color: #00F; /* to: blue */ } } @-webkit-keyframes colorchange { 0% { background-color: #00F; /* from: blue */ } 25% { background-color: #F00; /* red */ } 50% { background-color: #0F0; /* green */ } 75% { background-color: #F0F; /* purple */ } 100% { background-color: #00F; /* to: blue */ } }
对于0%这个也可以用from关键字来替代,同样的可以用to来代替100%,过渡状态,你可以定义任何百分比;
将animation应用到元素的属性写法,和transition差不太多:
div:hover { animation-name: colorchange; animation-duration: 1s; animation-timing-function: linear; animation-delay: 1s; animation-fill-mode:forwards; /*forwards表示让动画停留在结束状态*/ animation-direction: normal; animation-iteration-count: 3; /*用来指定动画循环的次数,无限循环用infinite*/ } /****简写****/ div:hover { animation: 1s 1s rainbow linear 3 forwards normal; }
animation-direction有四个值:
normal:默认,从0%执行到100%
reverse:动画从100%执行到0%
alternate:动画在0%到100%之间往复执行;
alternate-reverse与alternate一致,不过是从100%开始;
animation-play-state
有时,动画播放过程中,会突然停止。这时,默认行为是跳回到动画的开始状态;
如果想让动画保持突然终止时的状态可以使用animation-play-state: running;
浏览器支持
IE 10和Firefox(>= 16)支持没有前缀的animation,而chrome不支持,所以必须使用webkit前缀。
也就是说,实际运用中,代码必须写成下面的样子:
div:hover { -webkit-animation: 1s rainbow; animation: 1s rainbow; } @-webkit-keyframes rainbow { 0% { background: #c00; } 50% { background: orange; } 100% { background: yellowgreen; } } @keyframes rainbow { 0% { background: #c00; } 50% { background: orange; } 100% { background: yellowgreen; } }
参考资料:
http://www.zhangxinxu.com/wordpress/2010/11/css3-transitions-transforms-animation-introduction/
http://www.w3cplus.com/content/css3-transform
http://beiyuu.com/css3-animation/
http://www.zhangxinxu.com/wordpress/2012/06/css3-transform-matrix-%E7%9F%A9%E9%98%B5/
http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html