html帧动画效果,HTML5+CSS3从入门到精通之CSS3 animation实现逐帧动画

本篇文章探讨了HTML5+CSS3从入门到精通之CSS3 animation实现逐帧动画,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

9149589295e8456bf4f05a4f3428d931.png

<

css3里面的animation属性非常强大,但是自己用的比较少,最近有次面试就刚好被问到了,趁现在有时间就对animation做一个小总结。同时实现一个逐帧动画的demo作为练习

animation属性一览

因为animation属性比较多,然后在w3c上看有点蛋疼,干脆也做了一份导图,以后想查看,就一目了然了

animation属性一览

使用animation实现逐帧动画

熟悉了animation的属性之后,得找个简单的小项目实现下,逐帧动画好有意思,先跑一个满足下自己

思路很简单,就是给元素一个雪碧图的背景,然后添加的帧动画更改background-position,关键代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

@keyframes run{

from{

background-position: 0 0;

}

to{

background-position: -1540px 0 ;

}

}

div{

width:140px;

height:140px;

background: url(run.png) ;

animation-name:run;

animation-duration:1s;

animation-iteration-count:infinite;

}

但是跑起来后我们发现,每帧动画之间帧动画都是滑动,并不是我们要的效果,为什么呢?

原来animation默认以ease方式过渡,它会在每个关键帧之间插入补间动画,所以动画效果是连贯性的

知道原因就好办了,解决思路就是:

1

2

3

4

5

@keyframes run{

0%, 8%{  /*动作一*/  }

9.2%, 17.2%{  /*动作二*/  }

...

}

step1:动作之间停留8帧,0%设置动作一,动作一结束在8%

step2:动作之间过渡1.2帧,9.2%设置动作二,动作二结束在17.2%

完整代码:

复制代码

1

2

3

4    

5    

css3逐帧动画

6    

7     @keyframes run{

8     0%, 8%{  background-position: 0 0;  }

9     9.2%, 17.2%{  background-position: -140px 0;  }

10     18.4%, 26.4%{  background-position: -280px 0 ;  }

11     27.6%, 35.6%{  background-position: -420px 0 ;  }

12     36.8%, 44.8%{  background-position: -560px 0 ;  }

13     46%, 54%{  background-position: -700px 0 ;  }

14     55.2%, 63.2%{  background-position: -840px 0 ;  }

15     64.4%, 72.4%{  background-position: -980px 0 ;  }

16     73.6%, 81.6%{  background-position: -1120px 0 ;  }

17     82.8%, 90.8%{  background-position: -1400px 0 ;  }

18     92%, 100%{  background-position: -1540px 0 ;  }

19     }

20     @-webkit-keyframes run{

21     0%, 8%{  background-position: 0 0;  }

22     9.2%, 17.2%{  background-position: -140px 0;  }

23     18.4%, 26.4%{  background-position: -280px 0 ;  }

24     27.6%, 35.6%{  background-position: -420px 0 ;  }

25     36.8%, 44.8%{  background-position: -560px 0 ;  }

26     46%, 54%{  background-position: -700px 0 ;  }

27     55.2%, 63.2%{  background-position: -840px 0 ;  }

28     64.4%, 72.4%{  background-position: -980px 0 ;  }

29     73.6%, 81.6%{  background-position: -1120px 0 ;  }

30     82.8%, 90.8%{  background-position: -1400px 0 ;  }

31     92%, 100%{  background-position: -1540px 0 ;  }

32     }

33     div{

34         width:140px;

35         height:140px;

36         background: url(http://images2015.cnblogs.com/blog/754767/201606/754767-20160601000042992-1734972084.png) ;

37         animation:run 1s infinite;

38             -webkit-animation:run 1s infinite;

39         animation-fill-mode : backwards;

40             -webkit-animation-fill-mode : backwards;

41     }

42    

43

44

45    

46

47

复制代码

还有另外一个实现方法,就是利用steps(),就是帧之间的阶跃动画,这个在w3c里面没有写,先贴个图

阶跃动画解析

由上图可知:

steps(1,start):动画一开始就跳到 100% 直到这一帧(不是整个周期)结束

steps(1,end):保持 0% 的样式直到这一帧(不是整个周期)结束

另外也可以直接设置 animation-timing-function:step-start/step-end

step-start效果等同于steps(1,start),step-end效果等同于steps(1,end)

最终效果,因为录制的问题可能有点卡顿,有兴趣的同学可以直接复制代码去跑下:

完整代码:

复制代码

1

2    

3    

4        

5        

css3逐帧动画

6        

7         @keyframes run{

8             0%{

9                 background-position: 0 0;

10             }

11             8.333%{

12                 background-position: -140px 0;

13             }

14             16.666%{

15                 background-position: -280px 0 ;

16             }

17             25.0%{

18                 background-position: -420px 0 ;

19             }

20             33.333%{

21                 background-position: -560px 0 ;

22             }

23             41.666%{

24                 background-position: -700px 0 ;

25             }

26             50.0%{

27                 background-position: -840px 0 ;

28             }

29             58.333%{

30                 background-position: -980px 0 ;

31             }

32             66.666%{

33                 background-position: -1120px 0 ;

34             }

35             75.0%{

36                 background-position: -1260px 0 ;

37             }

38             83.333%{

39                 background-position: -1400px 0 ;

40             }

41             91.666%{

42                 background-position: -1540px 0 ;

43             }

44             100%{

45                 background-position: 0 0 ;

46             }

47         }

48         @-webkit-keyframes run{

49             0%{

50                 background-position: 0 0;

51             }

52             8.333%{

53                 background-position: -140px 0;

54             }

55             16.666%{

56                 background-position: -280px 0 ;

57             }

58             25.0%{

59                 background-position: -420px 0 ;

60             }

61             33.333%{

62                 background-position: -560px 0 ;

63             }

64             41.666%{

65                 background-position: -700px 0 ;

66             }

67             50.0%{

68                 background-position: -840px 0 ;

69             }

70             58.333%{

71                 background-position: -980px 0 ;

72             }

73             66.666%{

74                 background-position: -1120px 0 ;

75             }

76             75.0%{

77                 background-position: -1260px 0 ;

78             }

79             83.333%{

80                 background-position: -1400px 0 ;

81             }

82             91.666%{

83                 background-position: -1540px 0 ;

84             }

85             100%{

86                 background-position: 0 0 ;

87             }

88         }

89         div{

90             width:140px;

91             height:140px;

92             background: url(http://images2015.cnblogs.com/blog/754767/201606/754767-20160601000042992-1734972084.png) ;

93             animation:run 1s steps(1, start) infinite;

94                 -webkit-animation:run 1s steps(1, start) infinite;

95         }

96        

97    

98    

99        

100    

本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值