一、介绍

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
所以圆运动的坐标点得在角原来的坐标上-10px
animation-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;

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. PHP、thinkPHP5.0开发网站文件管理功能(二)删除文件

    1.is_dir():检查指定的文件是否是目录 2.scandir():返回指定目录中的文件和目录数组 3.unlink():删除文件,如果删除的文件不存在会报错,加@抑制报错 public func ...

  2. php连接数据库mysql数据库

    查找数据 $con = mysqli_connect('localhost', 'root', '', 'mydb'); if (!$con) { die('数据库连接失败' . mysqli_con ...

  3. Sublime text中文乱码解决办法

    ConvertToUTF8 安装这个插件可以解决编码混乱问题 首先必须先配一下Sublime text ,安装 Package Control 1.  用Sublimt text 打开任意一个文件,C ...

  4. java——并查集 UnionFind

    时间复杂度: O(log*n),近乎是O(1)级别的 UnionFind 接口: public interface UF { int getSize(); boolean isConnected(in ...

  5. c++中代理类的学习

    https://blog.csdn.net/lcg910978041/article/details/51468680 C++代理类是为了解决这样的问题: 容器通常只能包含一种类型的对象,所以很难在容 ...

  6. Murano Weekly Meeting 2015.09.29

    Meeting time: 2015.September.29th 1:00~2:00 Chairperson:  Serg Melikyan, PTL from Mirantis Meeting s ...

  7. Session [php]

    1.启动会话 session_start() 通过session_register()函数创建会话 session_register()函数用来为会话登录一个变量来隐含地启动会话,但要求php.ini ...

  8. React.js 小书 Lesson4 - 前端组件化(三):抽象出公共组件类

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson4 转载请注明出处,保留原文链接和作者信息. 为了让代码更灵活,可以写更多的组件,我们把这种模 ...

  9. 第一次尝试用Open Live Writer写日志

    注册博客园很久了,一直没怎么用,今天登陆了一下,看到这个写日志工具,看着不错,试一下

  10. grep和管道

    1.管道命令: 可以连接多个Linux命令 命令1 | 命令2 | 命令3 2.grep  正则表达式  从文件或者字符串中搜索字符串 格式:grep  ‘’  file 返回符合规则的行 需求:查询 ...