CSS3(4)---动画(animation)

之前有写过过渡:CSS3(2)--- 过渡(transition)

个人理解两者不同点在于

过渡 只能指定属性的 开始值结束值,然后在这两个属性值之间进行平滑过渡来实现动画效果,因此只能实现简单的动画效果。

动画 除了定义 开始值结束值,在这之间还可以定义多个关键帧以及定义每个关键帧中元素的属性值来实现复杂的动画效果。

一、动画语法

1、属性语法

语法格式

animation:动画名称 动画时间 运动曲线  何时开始  播放次数  是否反方向;

animation 属性是一个简写属性,用于设置六个动画属性

注意: 对于一个动画而言有两个属性是必须的: 动画名称规定完成动画所花费的时间

2、速度曲线属性

语法

animation-timing-function: linear;  /* 动画从头到尾的速度是相同的 */

对于动画的速度曲线属性,有以下属性值:

3、播放次数属性

语法

animation-iteration-count: n|infinite;   /* 播放n次 或者无限循环 */

对于播放次数属性,有以下属性值

4、轮流反向播放动画属性

语法

animation-direction: normal|alternate;  /* 正常播放 或者 轮流反向播放 */

对于轮流反向播放动画属性,有以下属性值

二、如何使用动画

CSS3使用动画只需要2步:1、定义动画;2、调用动画

1、定义动画

在CSS中,在使用动画之前,我们必须使用@keyframes规则定义动画。

语法

<style type="text/css">
@keyframes 动画名 {
0% {
……
}
100% {
……
}
}
</style>

说明 0% 表示动画的开始,100% 表示动画的结束。0%和100% 是必须的,不过在一个@keyframes规则中可以由多个百分比构成,每一个百分比都可以定义

自身的CSS样式,从而形成一系列的动画效果。如果一个动画仅仅只有0%和100%这两个百分比的话,这时0%和100%还可以使用关键词 from和to 来代表,其中0%对应的是

from,100%对应的是to。

2、调用动画

调用动画的语法上面已经写过

animation:动画名称 动画时间 运动曲线  何时开始  播放次数  是否反方向;

这里关键的点在于: 定义动画的名称 和调用动画的名称 一定要一致

三、示例

1、示例

效果

这里设置了 无限播放次数 并且 轮流反向播放

代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动画</title>
<style> div {
width: 100px;
height: 100px;
background-color: pink;
position: absolute;
left: 0;
/*调用动画*/
/*animation:动画名称 花费时间 运动曲线 何时开始 播放次数 是否反方向;*/
animation: move 1s ease 0s infinite alternate;
} /*声明动画 关键帧 @keyframes 动画名称 { } */
@keyframes move {
from {
left: 0;
background-color: red;
} to {
left: 200px;
background-color: yellow; /* Safari 和 Chrome */
}
}
</style>
</head>
<body>
<div></div>
</body>
</html>

2、加载动画

效果

代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动画截图</title>
<style type="text/css">
.bian{
width: 302px;
height: 129px;
margin: 100px auto;
border: 1px solid black;
}
.zi{
width: 69px;
height: 17px;
display: block;
margin: 0 auto;
margin-top: 104px;
} .b1,.b2,.b3,.b4,.b5{
float: left;
width: 30px;
height: 36px;
margin-top: 32px;
margin-left:29px;
border-radius: 10px; } .b1{
background-color: red;
animation: dong 1s ease 1ms infinite;
}
.b2{ background-color: green;
animation: dong 1s ease 200ms infinite;
}
.b3{ background-color: #ffc1cd;
animation: dong 1s ease 400ms infinite;
}
.b4{ background-color: greenyellow; animation: dong 1s ease 600ms infinite;
}
.b5{ background-color: cyan;
animation: dong 1s ease 800ms infinite;
}
@keyframes dong { from{
height: 30px;/*原本 后来 进度 刚开始的什么样*/
}
to{
transform: scale(1,2);/*缩放 前边原本宽的倍数 后边原本高的倍数 */
}
}
</style>
</head>
<body>
<div class="bian">
<div class="b1"></div>
<div class="b2"></div>
<div class="b3"></div>
<div class="b4"></div>
<div class="b5"></div>
<span class="zi">loading...</span>
</div>
</body>
</html>

3、动画 + 2D变形示例

效果

代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
div {
width: 214px;
height: 214px;
margin: 100px auto;
position: relative; }
div img {
/*永远循环的匀速转动 */
animation: rotate linear 2s infinite;
} @keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg); /*旋转360度*/
}
}
div p {
position: absolute;
top: 0;
left: 0;
text-align: center;
line-height: 214px;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div>
<img src="images/web.png" alt="">
<p> 转转</p>
</div>
</body>
</html>

### 参考

1、w3school动画

2、CSS3动画

```
你如果愿意有所作为,就必须有始有终。(18)
```

最新文章

  1. LeetCode - 44. Wildcard Matching
  2. hdu 1021
  3. Java程序如何生成Jar、exe及安装文件
  4. ADB安装应用报错 Segmentation fault pm install /data...
  5. JUnit 4 如何正确测试异常
  6. 玩转createjs
  7. AngularJs directive &#39;transclude&#39; option 详解
  8. MEF高级进阶
  9. 顶层const和底层const
  10. Linux学习——shell编程之运算符
  11. Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件
  12. python3 Serial 串口助手的接收读取数据
  13. Useful Scripts for E-Business Suite Applications Analysts
  14. Spring Security Oauth2 单点登录案例实现和执行流程剖析
  15. js 动态绑定事件 on click 完美解决绑定不成功
  16. maven插件之checkstyle
  17. Google I/O 2018大会小结
  18. 【转载】C#反射机制详解
  19. Big Number-Asia 2002, Dhaka (Bengal) (计算位数)题解
  20. Android 6.0 7.0 8.0 一个简单的app内更新版本-okgo app版本更新

热门文章

  1. 15-8 pymysql的使用
  2. 为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!
  3. sublime简介
  4. webkit浏览器下多行显示,有省略号效果
  5. HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法
  6. H3C PPP会话建立过程
  7. ASP.NET一般登陆逻辑分享(01)
  8. 免费开源3D模型设计软件汇总
  9. vue脚手架搭项目 git push超时github网站打不开
  10. 2018百度之星资格赛A B F