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%

完整代码:

                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)

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

完整代码:

                                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 animation实现逐帧动画效果示例介绍的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月23日 21:10:00
下一篇 2025年12月23日 21:10:20

相关推荐

  • css全屏背景图片设置django加载图片路径详细说明

    下面小编就为大家带来一篇css全屏背景图片设置,django加载图片路径详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 css全屏背景图片设置,django加载图片路径详解 #bg { position:fixed; top:0; left:0; width:10…

    好文分享 2025年12月23日
    000
  • CSS的Display属性可能的值的说明

    下面小编就为大家带来一篇浅谈CSS的Display属性可能的值。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧none 此元素不会被显示。 block 此元素将显示为块级元素,此元素前后会带有换行符。 inline 默认。此元素会被显示为内联元素,元素前后没有换行符。 …

    好文分享 2025年12月23日
    000
  • CSS样式之背景、文本的详细介绍

    一、背景 1、背景颜色用background-color属性,例如:body{background-color:red} 2、用图像做背景用background-image属性,例如body{background-image:ul1(23.jpg) 3、背景由图片重复平铺用backgroud-rep…

    好文分享 2025年12月23日
    000
  • CSS单位和值与样式设置技巧分享

    一、单位和值    1.1 颜色值   在网页中的颜色设置是非常重要,有字体颜色(color)、背景颜色(background-color)、边框颜色(border)等,设置颜色的方法也有很多种:   1、英文命令颜色   前面几个小节中经常用到的就是这种设置方法: p{color:red;}   …

    2025年12月23日
    000
  • 分享纯CSS实现鼠标悬停显示图片效果的实例

    这里来给大家推荐一个纯css实现鼠标悬停显示图片效果的实例分享,以针对鼠标移到tr标签上来添加hover这种最简单的方式来演示,简单明了,需要的朋友可以参考下 最近在做一个网盘的项目,用到了鼠标移上去效果,这个效果可以用js来实现,今天主要分享一下,这个效果如何用纯css实现! 效果如下图: htm…

    2025年12月23日
    000
  • 浅谈css清除浮动clearfix和clear的用法介绍

    下面小编就为大家带来一篇浅谈css清除浮动(clearfix 和clear)的用法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 本文主要是讲解如何在 html 中使用 clearfix 和 clear,针对那些刚开始了解 css 的童鞋。关于 clearfix 和 …

    好文分享 2025年12月23日
    000
  • 详解CSS中的percentage百分比值使用方法

    一起来了解css中的percentage百分比值使用方法 百分比值是CSS中设计各种元素尺寸以及页面布局的基础手段,这里就带大家来彻底掌握CSS中的percentage百分比值使用,包括percentage转px的方法等,here we go~ 百分比旨在相对于父元素的相同属性的大小。如果用来设置字…

    2025年12月23日
    000
  • CSS中的选择器优先级顺序的详细介绍

    特殊性是什么 在对一个HTML元素应用CSS样式时,常常有很多种方法可以找到元素,比如: 这是一个段落 #container p { color:red } p p { color:green } p { color:yellow } 可见,如果要作用到一个HTML元素的方法有很多,远远不止这些。那…

    好文分享 2025年12月23日
    000
  • 在CSS中Box Model盒模型中的边距图文详解

    盒模型由以下css属性组成: 0.内容(content)1.padding 内边距2.border 边框3.margin 外边距下面有一个最常见的例子,虚线不属于盒模型,用于标识范围。 .box { width: 200px; height: 200px; background-color: gre…

    2025年12月23日
    000
  • 详解Less框架中将CSS强制打包到单个文件中的技巧

    在使用less预编译框架时我们总是希望能高效管理css文件的部署结构,这里我们就来看一个在less框架中将css强制打包到单个文件中的技巧,需要的朋友可以参考下 less 在import 其它less文件的时候会将其合并到单个文件中。但是当引入css 文件时,默认不会将css 合并进来 。使用inl…

    好文分享 2025年12月23日
    000
  • CSS的box-align属性控制子元素布局实例分析

    box-align 说明 box-align属性, 指定元素内子要素纵方向排列指定时使用。容器元素比子元素大很多的情况下,使用box-align属性,可以指定子元素的排序顺序,并且可以指定子元素如何表示。还有,纵方向排列一说,可以解释为元素内子元素的配置方向默认值为水平,使用此属性后垂直方向进行排列…

    2025年12月23日
    000
  • 详解CSS绘制三角形箭头图案技术解析

    最近我想修改一下这个网站,我想在上面放置一个提示框。这是很容易,但我想让提示框上有一个三角形的箭头。可是,一想到这需要使用图片,并且各种颜色,各种方向的箭头要准备无数种,这几乎是一种灾难。幸运的是,mootools的核心开发着darren waddell告诉了我一个非常棒的技术:用css绘制三角形箭…

    好文分享 2025年12月23日
    000
  • CSS实现商品图片点击放大效果的方法

    本文实例为大家分享了纯css实现图片点击放大带关闭按钮的图片特效代码,效果非常棒,供大家参考,具体内容如下 源码下载、演示 实现代码: CSS代码: .product { width:320px; height:150px; border:1px solid #ddd; margin:0 auto;…

    2025年12月23日
    000
  • 使用CSS的@supports标记来检测浏览器的兼容情况分析

    @supports可以用来检查浏览器是否支持某css属性,并且可以通过javascript进行控制,以下就来详细说明使用css的@supports标记来检测浏览器的兼容情况的方法 CSS @supports标记在CSS代码里跟@media查询语句的语法相似: @supports(prop:value…

    好文分享 2025年12月23日
    000
  • 详解CSS的overflow属性防止float撑开div的使用方法

    我们在使用float设定浮动元素的时候经常会遇到撑破p的情况,其中一种解决方法即是利用overflow: hidden,这里我们就来看一下使用css的overflow属性防止float撑开p的方法: 许多应征前端工程师的人,在面试时都会被问到这类float的问题。例如:p元素内的两个子元素p都flo…

    2025年12月23日
    000
  • CSS下拉菜单简单制作方法介绍

    本文实例为大家分享了css下拉菜单的具体实现代码,供大家参考,具体内容如下 下拉菜单实例 .dropdown { position: relative; display: inline-block; } .dropdown-content { display: none; position: abs…

    2025年12月23日
    000
  • CSS中的table-cell属性使用实例

    先让我们来研究下table,那些年曾经使用的table布局为何如此辉煌荡漾呢?她的特点有哪些呢?抛弃table的兼容性、seo、加载等与本文无关的内容不谈,只看属性,那么就两个特点: 1.同行等高。2.宽度自动调节。那么table-cell是不是具备这个特点呢?答案是yes,为什么呢?css中有一个…

    2025年12月23日 好文分享
    000
  • CSS的table-cell属性实现左图右文的排版方法示例介绍

    一些情况下使用table-cell比float来得更加简单有效,比如水平菜单的样式编写,这里我们则来看一下使用css的table-cell属性实现左图右文的排版方法详解: 对要素进行横向排列的时候,一般都会使用float, display:inline-block等方法。我们使用table-cell…

    2025年12月23日
    000
  • CSS实现隐藏和显示功能的代码

    废话不多说,直接给大家贴代码了 关键代码如下所示: .trans-fadeout{ -webkit-transition:all 1s linear; -moz-transition:all 1s linear; -ms-transition:all 1s linear; -o-transition…

    好文分享 2025年12月23日
    000
  • CSS的子元素选择器用法详细介绍

    基础 子元素选择器只能一级一级向下寻找,不能跨越  HTML代码: this is my web page. 立即学习“前端免费学习笔记(深入)”; CSS代码: p>strong { color: purple; } p>strong>i { font-size: 50px; }…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信