css动画帧动画效果,CSS3 animation实现逐帧动画效果

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

animation属性一览

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

3fea24661dc72d66e869356fa9bac393.png

使用animation实现逐帧动画

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

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

css code复制内容到剪贴板

@keyframes run{

from{

background-position: 0 0;

}

to{

background-position: -1540px0 ;

}

}

div{

width:140px;

height:140px;

background:url(run.png) ;

animation-name:run;

animation-duration:1s;

animation-iteration-count:infinite;

}

1ac9f02d60c4831361127645791de948.png

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

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

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

css code复制内容到剪贴板

@keyframes run{

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

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

...

}

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

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

完整代码:

xml/html code复制内容到剪贴板

html>

css3逐帧动画

@keyframes run{

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

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

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

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

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

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

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

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

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

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

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

}

@-webkit-keyframes run{

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

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

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

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

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

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

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

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

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

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

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

}

div{

width:140px;

height:140px;

background: url(blog/754767/201606/754767-20160601000042992-1734972084.png) ;

animation:run 1s infinite;

-webkit-animation:run 1s infinite;

animation-fill-mode : backwards;

-webkit-animation-fill-mode : backwards;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值