一、介绍

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

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

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

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

一种在不断变化的效果。

举个栗子:

@keyframes changecolor{0%{background: red;}20%{background:blue;}40%{background:orange;}60%{background:green;}80%{background:yellow;}100%{background: red;}
}
div {width: 150px;height: 100px;background: red;color:#fff;margin: 20px auto;
}
div:hover {animation: changecolor 5s ease-out .2s;
}


二 调用动画

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

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

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

/*
注意translate变化的坐标位置
四个角顺时针的坐标(0,0) (100,0) (100,100) (0,100)
因为圆半径为10
所以圆运动的坐标点得在角原来的坐标上-10pxanimation-delay设置0s,这样动画就不会有延迟
*/
@keyframes around{0% {transform: translate(-10px,-10px);}25%{transform: translate(90px,-10px);}50%{transform: translate(90px, 90px); }75%{transform:translate(-10px,90px);}100%{transform: translate(-10px,-10px);}
}
div {width: 100px;height: 100px;border: 1px solid #000;margin: 20px auto;
}
div span {display: inline-block;width: 20px;height: 20px;background: orange;border-radius: 100%;/*调用动画名*/animation-name:around;animation-duration: 10s;animation-timing-function: ease;animation-delay: 0s;/*动画无限循环*/animation-iteration-count:infinite;
}


 三、设置动画的播放次数

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

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

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

@keyframes move {0%{transform: translate(0);}15%{transform: translate(50px,80px);}30%{transform: translate(100px,0);}45%{transform: translate(150px,80px);}60%{transform:translate(200px,0);}75%{transform: translate(250px,80px);}100%{transform: translate(300px,0);}
}div {width:320px;height: 100px;border: 1px solid #000;margin: 20px auto;
}
div span {display: inline-block;width: 20px;height: 20px;background: green;border-radius: 100%;animation-name:move;animation-duration: 10s;animation-timing-function:ease;animation-delay:.1s;animation-iteration-count:infinite;
}

  


四、设置动画播放方向

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

语法:animation-direction:normal | alternate

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

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


五、设置动画的播放状态

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

有两个参数:running, paused

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

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

@keyframes move {0%{transform: translateY(40px);}15%{transform: translate(40px,40px);}30%{transform: translate(40px,80px);}45%{transform: translate(40px,40px);}60%{transform: translate(40px,0);}75%{transform: translate(40px,40px);}90%{transform: translate(80px,40px);}100%{transform: translateY(40px);}
}div {width: 100px;height: 100px;border: 1px solid red;margin: 20px auto;
}
span {display: inline-block;width: 20px;height: 20px;background: orange;transform: translateY(90px);animation-name: move;animation-duration: 10s;animation-timing-function: ease-in;animation-delay: 0s;animation-iteration-count:infinite;animation-direction:alternate;animation-play-state:paused;
}
div:hover span {animation-play-state:running;
}


六、设置动画时间外属性

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

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

转载于:https://www.cnblogs.com/afighter/p/5732710.html

css3中的 @Keyframes相关推荐

  1. html keyframes无效,CSS3 中的@keyframes介绍

    语法 @keyframes animationname {keyframes-selector {css-styles;}} animationname 必需.定义动画的名称. keyframes-s ...

  2. css中哪些属性与创建多列相关,css3中的新增属性有哪些

    css3中的新增属性有哪些 发布时间:2021-04-02 17:39:08 来源:亿速云 阅读:90 作者:Leah 这篇文章将为大家详细讲解有关css3中的新增属性有哪些,文章内容质量较高,因此小 ...

  3. CSS3中的2D和3D转换知识介绍

    一  2D转换 转换是CSS3中具有颠覆性的特征之一,可以实现元素的位移.旋转.变形.缩放,甚至支持矩阵方式,配合即将学习的过渡和动画知识,可以取代大量之前只能靠Flash才可以实现的效果. 1.移动 ...

  4. css3个性loading,css3 中实现炫酷的loading效果

    •今天实现了一个炫酷的loading效果,基本全用css来实现,主要练习一下css3的熟练运用 •js需要引入jquery 只用到了一点点js •先看效果图 html: 加载中 . . . css: ...

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

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

  6. CSS3中的动画效果记录

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

  7. css3中的变形(transform)、过渡(transtion)、动画(animation)

    Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix.下面我们一 ...

  8. css3中的动画学习分享

    大家好,这里是demo软件园,今天为大家分享的是css3中的动画(animation). css3动画: 使元素从一种样式逐渐变化为另一种样式的效果. 动画原理:通过把人物的表情.动作.变化等分解后画 ...

  9. CSS3 动画关键帧 @keyframes

    在CSS3中,通过 animation 属性来定义动画.虽然 transition 也可以实现从一种状态到另一种状态的动画效果,但它只能控制开始和结束的两个点,功能非常有限.而 animation 除 ...

最新文章

  1. 深度学习原来还可以这么学!
  2. 解密Kernel:为什么适用任何机器学习算法?
  3. bzoj1513【POI2006】Tet-Tetris 3D
  4. equal、hashcode、==
  5. Python菜鸟之路:Python基础-Python操作RabbitMQ
  6. php拖拽原理,JS拖拽效果及原理解析
  7. Trie可持久化Trie
  8. MySQL基础篇(02):从五个维度出发,审视表结构设计
  9. NumPy数值计算库-1
  10. Android图表引擎AChartEngine - 简介
  11. Json-getJSON
  12. php 获取顶级域名、一级域名
  13. “Python小屋”1300篇历史文章分类速查表
  14. Chrome谷歌浏览器连接路由器不上
  15. 〖Python零基础入门篇③〗- Pycharm编辑器不能复制粘贴怎么办?
  16. java 函数参数后加throw_函数后面加throw关键字
  17. C语言数字图像处理进阶---1 Photoshop图层算法
  18. 良品铺子天猫618爆卖300万个手撕面包,还用数据改造线下
  19. 经济应用文写作【11】
  20. 5G NR MCG,SCG,PCell,PSCell,SCell,sPCell 概念

热门文章

  1. php非,通过非数字和字符的方式实现PHP WebShell
  2. 从硬盘安装dell服务器,Dell服务器硬盘安装.doc
  3. python声音信号调制_用python产生正弦波和PWM信号产生脉冲幅度调制
  4. 2021CCPC河北省省赛F题(河南省CCPC测试赛重现)
  5. easyswoole和mixphp_swoole框架都有哪些
  6. json string 格式_自己动手实现一个简单的JSON解析器
  7. python十进制小数转二进制_python十进制和二进制的转换 (含浮点数)
  8. CentOS 6 rpm方式安装mysql
  9. centos卸载linux里面mysql,熟悉linux-mysql的安装与卸载(centos)
  10. 与华为交换机用access_学校机房项目交换机的配置,理解这篇,交换机配置不再难...