关于CSS3的animation实现逐帧动画效果

这篇文章主要介绍了css3 animation实现逐帧动画效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

animation属性一览

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

关于CSS3的animation实现逐帧动画效果

使用animation实现逐帧动画

立即学习“前端免费学习笔记(深入)”;

熟悉了animation的属性之后,得找个简单的小项目实现下,逐帧动画好有意思,先跑一个满足下自己
思路很简单,就是给元素一个雪碧图的背景,然后添加的帧动画更改background-position,关键代码:

@keyframes run{       from{           background-position: 0 0;       }       to{           background-position: -1540px 0 ;       }   }   p{       width:140px;       height:140px;       background: url(run.png) ;       animation-name:run;       animation-duration:1s;       animation-iteration-count:infinite;   }

登录后复制

关于CSS3的animation实现逐帧动画效果

但是跑起来后我们发现,每帧动画之间帧动画都是滑动,并不是我们要的效果,为什么呢?
原来animation默认以ease方式过渡,它会在每个关键帧之间插入补间动画,所以动画效果是连贯性的
知道原因就好办了,解决思路就是:

@keyframes run{       0%, 8%{  /*动作一*/  }       9.2%, 17.2%{  /*动作二*/  }       ...   }

登录后复制

step1:动作之间停留8帧,0%设置动作一,动作一结束在8%
step2:动作之间过渡1.2帧,9.2%设置动作二,动作二结束在17.2%

完整代码:

nbsp;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 ;  }       }       p{           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;       }                 

    

登录后复制

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

关于CSS3的animation实现逐帧动画效果

由上图可知:

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)

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

完整代码:

nbsp;html>                                css3逐帧动画                    @keyframes run{               0%{                   background-position: 0 0;               }               8.333%{                   background-position: -140px 0;               }               16.666%{                   background-position: -280px 0 ;               }               25.0%{                   background-position: -420px 0 ;               }               33.333%{                   background-position: -560px 0 ;               }               41.666%{                   background-position: -700px 0 ;               }               50.0%{                   background-position: -840px 0 ;               }               58.333%{                   background-position: -980px 0 ;               }               66.666%{                   background-position: -1120px 0 ;               }               75.0%{                   background-position: -1260px 0 ;               }               83.333%{                   background-position: -1400px 0 ;               }               91.666%{                   background-position: -1540px 0 ;               }               100%{                   background-position: 0 0 ;               }           }           @-webkit-keyframes run{               0%{                   background-position: 0 0;               }               8.333%{                   background-position: -140px 0;               }               16.666%{                   background-position: -280px 0 ;               }               25.0%{                   background-position: -420px 0 ;               }               33.333%{                   background-position: -560px 0 ;               }               41.666%{                   background-position: -700px 0 ;               }               50.0%{                   background-position: -840px 0 ;               }               58.333%{                   background-position: -980px 0 ;               }               66.666%{                   background-position: -1120px 0 ;               }               75.0%{                   background-position: -1260px 0 ;               }               83.333%{                   background-position: -1400px 0 ;               }               91.666%{                   background-position: -1540px 0 ;               }               100%{                   background-position: 0 0 ;               }           }           p{               width:140px;               height:140px;               background: url(754767/201606/754767-20160601000042992-1734972084.png) ;               animation:run 1s steps(1, start) infinite;                   -webkit-animation:run 1s steps(1, start) infinite;           }                                 

      

登录后复制

关于CSS3的animation实现逐帧动画效果

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

如何使用CSS3的box-reflect来制作倒影效果

如何使用CSS3的box-reflect来制作倒影效果

以上就是关于CSS3的animation实现逐帧动画效果的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2896206.html

(0)
上一篇 2025年3月10日 23:09:53
下一篇 2025年3月7日 19:31:11

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 关于css 属性选择器的解析

    下面为大家带来一篇全面了解css 属性选择器。内容挺不错的,现在就分享给大家,也给大家做个参考。 1.[class~=”flower”]:选中有flower的class  class=”flower ss”  cla…

    编程技术 2025年3月10日
    200
  • 如何使用CSS实现鼠标悬浮出现遮罩层

    这篇文章给大家分享了两个鼠标悬浮出现说明遮罩层的效果,大家可以根据自己的需要选择某一种效果,两种效果文中都给出了实例代码,下面来一起看看吧。 先来一个简单的实现方法: nbsp;html>  Document  .mask-wrapp…

    编程技术 2025年3月10日
    200
  • CSS3的animation实现简易幻灯片轮播特效

    这篇文章主要为大家详细介绍了css3 animation实现简易幻灯片轮播特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 CSS3有个别特性,可以触发硬件GPU来加速渲染,而不是调用默认浏览器引擎渲染; 但是很多属性,默认都是不开启…

    2025年3月10日
    200
  • CSS中使用Flexbox来达到居中效果的方法实现

    这篇文章主要介绍了css中flexbox来达到居中效果的实例,注意一下ie浏览器中的兼容问题,需要的朋友可以参考下 CSS未来发展的方向就是采用Flexbox这种设计,解决像垂直居中这种共同的问题。请注意,Flexbox有不止一种办法居中,…

    2025年3月10日
    200
  • css实现自动换行以防撑破div影响排版

    自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是css如何实现换行的方法 对于p,p等块级元素正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,…

    编程技术 2025年3月10日
    200
  • CSS实现面包屑导航栏

    这篇文章主要为大家介绍了两个纯css 面包屑导航栏实现代码,内容比较简单,不会的朋友可以进来看一下,其中html代码实现非常简单,需要的朋友可以参考下   下面是两个纯CSS 面包屑导航栏实现代码,在网上找了一些方法但觉得都不合适唯独这两个…

    2025年3月10日
    200
  • css页面中左中右分栏布局的实现

    页面左中右分栏布局在目前的网页布局中是比较常见的,下面就与大家分享两个不错的方法可以实现左中右分栏布局,代码很详细,需要的朋友可不要错过 以下代码复制粘贴即可使用: 示例一:  .page_center { width:100%; } #n…

    编程技术 2025年3月10日
    200
  • 如何使用css属性nth-child(n)匹配选择第n个子元素

    这篇文章主要介绍了关于如何使用css属性nth-child(n)匹配选择第n个子元素,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 css匹配选择第n个子元素可以使用:nth-child(n) 选择器,其匹配属于其父元素的第…

    编程技术 2025年3月10日
    200
  • 如何使用CSS实现的大型下拉菜单

    下拉菜单在很多网页中都能应用到,这篇文章主要介绍了纯css实现的大型下拉菜单的示例代码的相关资料,内容挺不错的,现在分享给大家,也给大家做个参考。 这是一款纯CSS实现的大型下拉菜单。该大型菜单使用HTML和纯CSS代码制作,没有任何js代…

    编程技术 2025年3月10日
    200
  • 关于CSS选择器种类及使用介绍

    常用的有标签选择器、类选择器、ID选择器等等,其实还有很多,在接下来的文章中为大家详细介绍下这些选择器的种类及其使用 首先说主要都有哪些先择器 1.标签选择器(如:body,p,p,ul,li) 2.类选择器(如:class=”…

    编程技术 2025年3月10日
    200

发表回复

登录后才能评论