作业题之动画改良
CSS3 有3种和动画相关的属性:transform, transition, animation。
其中 transform 描述了元素静态样式。而transition 和 animation 却都能实现动画效果。
所以它们常常配合使用,可以做到一些很炫的效果。
不同点:
1. 触发条件不同。transition通常和hover等事件配合使用,由事件触发。animation则和gif动态图差不多,立即播放。
2. 循环。 animation可以设定循环次数。
3. 精确性。 animation可以设定每一帧的样式和时间。tranistion 只能设定头尾。 animation中可以设置每一帧需要单独变化的样式属性,
transition中所有样式属性都要一起变化。
4. 与javascript的交互。animation与js的交互不是很紧密。tranistion和js的结合更强大。js设定要变化的样式,
transition负责动画效果,天作之合,比之前只能用js时爽太多。
结论:
1. 如果要灵活定制多个帧以及循环,用animation.
2. 如果要简单的from to 效果,用 transition.
3. 如果要使用js灵活设定动画属性,用transition.
以上是摘抄别人的博文的。
transition和animation是不能一起共同一起使用的。
这次作业有个要做动画的效果。
达标效果:
这个是用transition简单的过渡动画效果,由于好像不是很美观,所以改良了一下。
改良效果:
这个是使用animation的动画效果实现的,可以看出动画比较丰富一些,不会只有一种动画在动。
改良代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>zuoye2</title> <style> div{ margin: 50px auto 0; width: 600px; height: 194px; background: url(bg_icon.png) 158px 46px/144px 66px, url(21.png) 510px 194px/24px 24px, url(22.png) 539px 194px/23px 24px, url(23.png) 568px 194px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; animation: doMove01 1s forwards; } @keyframes doMove01{ 0%{background: url(bg_icon.png) 150px 32px/175px 96px, url(21.png) 510px 163px/24px 24px, url(22.png) 539px 163px/23px 24px, url(23.png) 568px 163px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat;} 100%{ background: url(bg_icon.png) 158px 46px/144px 66px, url(21.png) 510px 194px/24px 24px, url(22.png) 539px 194px/23px 24px, url(23.png) 568px 194px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } } div:hover{ animation: doMove 1.3s forwards; } @keyframes doMove{ 0%{background: url(bg_icon.png) 156px 44px/147px 69px, url(21.png) 510px 194px/24px 24px, url(22.png) 539px 194px/23px 24px, url(23.png) 568px 194px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } 5%{background: url(bg_icon.png) 155px 43px/150px 72px, url(21.png) 510px 170px/24px 24px, url(22.png) 539px 182px/23px 24px, url(23.png) 568px 194px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } 10%{background: url(bg_icon.png) 154px 41px/153px 75px, url(21.png) 510px 158px/24px 24px, url(22.png) 539px 170px/23px 24px, url(23.png) 568px 182px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } 20%{background: url(bg_icon.png) 153px 39px/159px 81px, url(21.png) 510px 137px/24px 24px, url(22.png) 539px 149px/23px 24px, url(23.png) 568px 161px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } 25%{background: url(bg_icon.png) 152px 38px/162px 84px, url(21.png) 510px 149px/24px 24px, url(22.png) 539px 137px/23px 24px, url(23.png) 568px 149px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } 30%{background: url(bg_icon.png) 151px 36px/165px 87px, url(21.png) 510px 161px/24px 24px, url(22.png) 539px 149px/23px 24px, url(23.png) 568px 137px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } 35%{background: url(bg_icon.png) 150px 34px/168px 90px, url(21.png) 510px 163px/24px 24px, url(22.png) 539px 161px/23px 24px, url(23.png) 568px 149px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } 40%{background: url(bg_icon.png) 150px 32px/171x 93px, url(21.png) 510px 163px/24px 24px, url(22.png) 539px 163px/23px 24px, url(23.png) 568px 161px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } 45%{background: url(bg_icon.png) 150px 32px/175px 96px, url(21.png) 510px 163px/24px 24px, url(22.png) 539px 163px/23px 24px, url(23.png) 568px 163px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } 100%{background: url(bg_icon.png) 150px 32px/175px 96px, url(21.png) 510px 163px/24px 24px, url(22.png) 539px 163px/23px 24px, url(23.png) 568px 163px/23px 24px, url(zuoye-2.png); background-repeat:no-repeat; } } </style> </head> <body> <div></div> </body> </html>
有更好的意见和想法请评论一下。前提是纯css实现的。(O ^ ~ ^ O)