一、介绍

keyframes被称为关键帧,其类似于Flash中的关键帧。在CSS3中其主要以“@keyframes”开头,后面跟着是动画名称加上一对花括号“{…}”,括号中是一些不同时间段样式规则。

语法:@keyframes animationname {keyframes-selector{css-styles;}}

在@keyframes中定义动画名称时,其中0%和100%还可以使用关键词fromto来代表,其中0%对应的是from,100%对应的是to。

在一个“@keyframes”中的样式规则可以由多个百分比构成的,如在“0%”到“100%”之间创建更多个百分比,分别给每个百分比中给需要有动画效果的元素加上不同的样式,从而达到

一种在不断变化的效果。

举个栗子:

  1. @keyframes changecolor{
  2. 0%{
  3. background: red;
  4. }
  5. 20%{
  6. background:blue;
  7. }
  8. 40%{
  9. background:orange;
  10. }
  11. 60%{
  12. background:green;
  13. }
  14. 80%{
  15. background:yellow;
  16. }
  17. 100%{
  18. background: red;
  19. }
  20. }
  21. div {
  22. width: 150px;
  23. height: 100px;
  24. background: red;
  25. color:#fff;
  26. margin: 20px auto;
  27. }
  28. div:hover {
  29. animation: changecolor 5s ease-out .2s;
  30. }


二 调用动画

animation-name属性主要是用来调用 @keyframes 定义好的动画。需要特别注意: animation-name 调用的动画名需要和“@keyframes”定义的动画名称完全一致(区分大

小写),如果不一致将不具有任何动画效果。

注意:需要在 Chrome 和 Safari 上面的基础上加上-webkit-前缀,Firefox加上-moz-。 

  1. /*
  2. 注意translate变化的坐标位置
  3. 四个角顺时针的坐标(0,0) (100,0) (100,100) (0,100)
  4. 因为圆半径为10
  5. 所以圆运动的坐标点得在角原来的坐标上-10px
  6. animation-delay设置0s,这样动画就不会有延迟
  7. */
  8. @keyframes around{
  9. 0% {
  10. transform: translate(-10px,-10px);
  11. }
  12. 25%{
  13. transform: translate(90px,-10px);
  14. }
  15. 50%{
  16. transform: translate(90px, 90px);
  17. }
  18. 75%{
  19. transform:translate(-10px,90px);
  20. }
  21. 100%{
  22. transform: translate(-10px,-10px);
  23. }
  24. }
  25. div {
  26. width: 100px;
  27. height: 100px;
  28. border: 1px solid #000;
  29. margin: 20px auto;
  30. }
  31. div span {
  32. display: inline-block;
  33. width: 20px;
  34. height: 20px;
  35. background: orange;
  36. border-radius: 100%;
  37. /*调用动画名*/
  38. animation-name:around;
  39. animation-duration: 10s;
  40. animation-timing-function: ease;
  41. animation-delay: 0s;
  42. /*动画无限循环*/
  43. animation-iteration-count:infinite;
  44. }


 三、设置动画的播放次数

animation-iteration-count属性主要用来定义动画的播放次数。

语法:animation-iteration-count: infinite | <number>

默认值为1,取值为infinite时,动画将无限次播放

  1. @keyframes move {
  2. 0%{
  3. transform: translate(0);
  4. }
  5. 15%{
  6. transform: translate(50px,80px);
  7. }
  8. 30%{
  9. transform: translate(100px,0);
  10. }
  11. 45%{
  12. transform: translate(150px,80px);
  13. }
  14. 60%{
  15. transform:translate(200px,0);
  16. }
  17. 75%{
  18. transform: translate(250px,80px);
  19. }
  20. 100%{
  21. transform: translate(300px,0);
  22. }
  23. }
  24.  
  25. div {
  26. width:320px;
  27. height: 100px;
  28. border: 1px solid #000;
  29. margin: 20px auto;
  30. }
  31. div span {
  32. display: inline-block;
  33. width: 20px;
  34. height: 20px;
  35. background: green;
  36. border-radius: 100%;
  37. animation-name:move;
  38. animation-duration: 10s;
  39. animation-timing-function:ease;
  40. animation-delay:.1s;
  41. animation-iteration-count:infinite;
  42. }

  


四、设置动画播放方向

animation-direction属性主要用来设置动画播放反向

语法:animation-direction:normal | alternate

  • normal是默认值,如果设置为normal时,动画的每次循环都是向前播放;
  • 另一个值是alternate,他的作用是,动画播放在第偶数次向前播放,第奇数次向反方向播放。

在上面栗子的 div span{…}加上animation-direction:alterate, 如图


五、设置动画的播放状态

animation-play-state属性主要用来控制元素动画的播放状态

有两个参数:running, paused

其中running是其默认值,主要作用就是类似于音乐播放器一样,可以通过paused将正在播放的动画停下来,也可以通过running将暂停的动画重新播放,这里的重新播放不一定

是从元素动画的开始播放,而是从暂停的那个位置开始播放。另外如果暂停了动画的播放,元素的样式将回到最原始设置状态。

  1. @keyframes move {
  2. 0%{
  3. transform: translateY(40px);
  4. }
  5. 15%{
  6. transform: translate(40px,40px);
  7. }
  8. 30%{
  9. transform: translate(40px,80px);
  10. }
  11. 45%{
  12. transform: translate(40px,40px);
  13. }
  14. 60%{
  15. transform: translate(40px,0);
  16. }
  17. 75%{
  18. transform: translate(40px,40px);
  19. }
  20. 90%{
  21. transform: translate(80px,40px);
  22. }
  23. 100%{
  24. transform: translateY(40px);
  25. }
  26. }
  27.  
  28. div {
  29. width: 100px;
  30. height: 100px;
  31. border: 1px solid red;
  32. margin: 20px auto;
  33. }
  34. span {
  35. display: inline-block;
  36. width: 20px;
  37. height: 20px;
  38. background: orange;
  39. transform: translateY(90px);
  40. animation-name: move;
  41. animation-duration: 10s;
  42. animation-timing-function: ease-in;
  43. animation-delay: 0s;
  44. animation-iteration-count:infinite;
  45. animation-direction:alternate;
  46. animation-play-state:paused;
  47. }
  48. div:hover span {
  49. animation-play-state:running;
  50. }


六、设置动画时间外属性

animation-fill-mode属性定义在动画开始之前和结束之后发生的操作。有四个属性值:none | forwards | backwords |both

比如,如果想让动画停在最后一幀处:animation-fill-mode:forward;

css3中的 @Keyframes的更多相关文章

  1. CSS3中的变形与动画(二)

    CSS3动画 过渡属性transiton-property 早期在Web中要实现动画效果,都是依赖于JavaScript或Flash来完成.但在CSS3中新增加了一个新的模块transition,它可 ...

  2. CSS3中的动画效果记录

    今天要记录的是CSS3中的三种属性transform.transition以及animation,这三个属性大大提升了css处理动画的能力. 一.Transform 变形 CSS中transform ...

  3. CSS3中的变形与动画【转】

    最近在学习制作移动端的页面,做了一个微信页面的小demo,其中用到了很多的CSS3新增的内容,其中就有CSS3新增的变形和动画.其实这种CSS3的动画效果用JS也可以实现,不过CSS3能开启硬件加速, ...

  4. css3中transition和animation的回调处理

    弱鸡最近在准备面试,网上找了一些题,发现一些基础题也完全答不好(┬_┬)看来还是要再接再励啊w(゚Д゚)w 言归正传,今天的主题是CSS3中的动画回调处理,这里动画执行完毕后触发的事件是transit ...

  5. css3中变形与动画(三)

    transform可以实现矩阵变换,transition实现属性的平滑过渡,animation意思是动画,动漫,这个属性才和真正意义的一帧一帧的动画相关.本文就介绍animation属性. anima ...

  6. CSS3中动画属性transform、transition和animation

    Transform:变形 在网页设计中,CSS被习惯性的理解为擅长表现静态样式,动态的元素必须借助于javascript才可以实现,而CSS3的出现改变了这一思维方式.CSS3除了增加革命性的创新功能 ...

  7. CSS3中新出现的技术

    CSS3中新出现的技术 CSS媒体查询 媒体查询 包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3加入的媒体查询使得无需修改内容便可以使样式应用于某些特定 ...

  8. CSS3中动画属性transform、transition 和 animation

    CSS3中和动画有关的属性有三个 transform.transition 和 animation.下面来一一说明:        transform   从字面来看transform的释义为改变,使 ...

  9. 关于css3中transform的理解(只是改变状态未改变其真正的属性)

    众所周知,在css3中可以用animation实现动画效果,在这里用一个transform:translateX举例. <div class="div1"></d ...

随机推荐

  1. 在新项目下使用rbc权限

    例子说明: 8 个步骤 1. 拷贝rabc这个app到项目中 2. 把迁移过来的rbac下migrations记录删除 3. 把rabc注册到项目中 4. 创建数据库迁移 5. 注册admin,录入数 ...

  2. 移动测试之appium+python 入门代码(三)

    在做app自动化过程中会踩很多坑,咱们都是用中文的app,所以首先要解决中文输入的问题!本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题. 一.定位搜索 1.打开淘宝点击搜索按钮,进入搜索页 ...

  3. Android 中怎么重新启动APP或系统

    重新启动应用程序,有两种方法,分别是: 1.通过ActivityManager来重新启动应用程序: ActivityManager manager = (ActivityManager)this.ge ...

  4. E. Three strings 广义后缀自动机

    http://codeforces.com/problemset/problem/452/E 多个主串的模型. 建立一个广义后缀自动机,可以dp出每个状态的endpos集合大小.同时也维护一个R[]表 ...

  5. 倒计时Text显示控制

    倒计时Text显示控制:public class TimeCtrl : MonoBehaviour { public Text SJ; //定义显示Text public int GameTimes= ...

  6. IO流等学习笔记

    1.为什么日期的开始是从1970年0101开始记录,计算机的日期记录是现在的时间距1970年的时间,可正可负.? 2.引用类型默认都为null,基本数据类型为0,除基本数据类型外所有的都为引用数据类型 ...

  7. jQuery源代码学习_工具函数_type

    jquery源代码学习_工具函数_type jquery里面有一个很重要的工具函数,$.type函数用来判断类型,今天写这篇文章,是来回顾type函数的设计思想,深入理解. 首先来看一下最终结果: 上 ...

  8. 硬盘和显卡的访问与控制(二)——《x86汇编语言:从实模式到保护模式》读书笔记02

    上一篇博文我们讲了如何看到实验结果,这篇博文我们着重分析源代码. 书中作者为了说明原理,约定了一种比较简单地用户程序头部格式,示意图如下(我参考原书图8-15绘制的,左边的数字表示偏移地址): 所以, ...

  9. c#-day01学习笔记

    C#语言基础 .net之父--------安德斯/海尔斯伯格 .net是一个平台,一个集合,一个环境 .net出现的背景 .net的核心功能:能够在任何的时间,任何的地点,使用任何的设备,访问网络 . ...

  10. C#入门--索引器

    C#入门--索引器 索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于它们的访问器采用参数. 索引器概述 索引器使得对象可按照与数组相似的方法进行索引. get 访问 ...