前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第100天:CSS3中animation动画详解

第100天:CSS3中animation动画详解

作者头像
半指温柔乐
发布2018-09-11 11:41:39
6540
发布2018-09-11 11:41:39
举报
文章被收录于专栏:前端知识分享

CSS3属性中有关于制作动画的三个属性:Transform,Transition,Animation

一、Animation定义动画

CSS3的Animation是由“keyframes”这个属性来实现这样的效果,keyframes就是关键帧。下面先来看看Keyframes:

Keyframes语法规则:

代码语言:javascript
复制
@keyframes 动画名 {
     from{开始状态}
      to{结束状态}
  }
  调用
  animation: 动画名称 持续时间 执行次数(infinite无限) alternate(来回) 运动曲线(linear线性) 延迟时间;
定义有两种方式,from......to和百分比。具体方法如下:
代码语言:javascript
复制
 1 <style>
 2         div{
 3             width: 200px;
 4             height: 200px;
 5             background-color: green;
 6             margin: 100px;
 7             /*调用动画:动画名 持续时间 执行次数(数字或无限) alternate(来回) 线性 延迟*/
 8           /*  animation: move 2s infinite alternate linear 1s;*/
 9 
10             animation: move2 4s infinite 1s;
11         }
12 
13         /*定义动画*/
14        @keyframes move {
15             from{
16                 transform: translateX(100px) rotate(0deg);
17             }
18             to{
19                 transform: translateX(800PX) rotate(360deg);
20             }
21 
22         }
23         /*定义多组动画*/
24         @keyframes move2 {
25             0%{
26                 transform: translate(100px,100px);
27                 background-color: green;
28                 border-radius: 0;
29             }
30             25%{
31                 transform: translate(600px,100px);
32                 background-color: yellow;
33             }
34             50%{
35                 transform: translate(600px,600px);
36                 background-color: blue;
37             }
38             75%{
39                 transform: translate(100px,600px);
40                 background-color: orange;
41             }
42             100%{
43                 transform: translate(100px,100px);
44                 background-color: red;
45                 border-radius: 50%;
46             }
47         }
48     </style>

二、动画属性

  • animation-name: move;/*动画名称*/
  • animation-duration: 2s; /*持续时间*/
  • animation-iteration-count:3 ; /*动画执行次数 无数次:infinite*/
  • animation-direction: alternate;/*动画方向 normal 正常,alternate 反向*/
  • animation-delay: 1s;/*动画延迟*/
  • animation-fill-mode: forwards;/*设置动画结束后盒子的状态 forwards:动画结束后的状态 backwards:保持动画开始前的状态*/
  • animation-timing-function: steps(3);/*运动曲线 linear线性 ease减速 ease-in 加速 ease-in-out先加速后减速 帧动画 steps()*/

三、案例

代码语言:javascript
复制
  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>太阳系</title>
  6     <style>
  7         body{
  8             background-color: #000;
  9         }
 10         .sun{
 11             width: 100px;
 12             height: 100px;
 13             position: absolute;
 14             left:50%;
 15             top:50%;
 16             transform: translate(-50%,-50%);
 17             background-color: yellow;
 18             box-shadow: 0 0 30px 3px gold;
 19             border-radius: 50%;
 20         }
 21         .earth{
 22             width: 300px;
 23             height: 300px;
 24             position: absolute;
 25             left:50%;
 26             top:50%;
 27             transform: translate(-50%,-50%);
 28             border: 1px solid #ccc;
 29             border-radius: 50%;
 30         }
 31         .earth::before{
 32             content: '';
 33             width: 40px;
 34             height: 40px;
 35             position: absolute;
 36             left:0;
 37             top:50%;
 38             transform: translate(-50%,-50%);
 39             background-color: dodgerblue;
 40             border-radius: 50%;
 41         }
 42         .moon{
 43             width: 80px;
 44             height: 80px;
 45             position: absolute;
 46             left:0;
 47             top:50%;
 48             transform: translate(-50%,-50%);
 49             border-radius: 50%;
 50             animation: rot 2s infinite linear;
 51         }
 52         .moon::before{
 53             content: '';
 54             width: 10px;
 55             height: 10px;
 56             position: absolute;
 57             left:0;
 58             top:50%;
 59             transform: translate(-50%,-50%);
 60             background-color: #fff;
 61             border-radius: 50%;
 62         }
 63         .venus{
 64             width: 500px;
 65             height: 500px;
 66             position: absolute;
 67             left:50%;
 68             top:50%;
 69             transform: translate(-50%,-50%);
 70             border: 1px solid #ccc;
 71             border-radius: 50%;
 72             animation: rot 6s infinite linear;
 73         }
 74         .venus::before{
 75             content: '';
 76             width: 30px;
 77             height: 30px;
 78             position: absolute;
 79             left:0;
 80             top:50%;
 81             transform: translate(-50%,-50%);
 82             background-color: red;
 83             border-radius: 50%;
 84         }
 85         .mars{
 86             width: 600px;
 87             height: 600px;
 88             position: absolute;
 89             left:50%;
 90             top:50%;
 91             transform: translate(-50%,-50%);
 92             border: 1px solid #ccc;
 93             border-radius: 50%;
 94             animation: rot 10s infinite linear;
 95         }
 96         .mars::before{
 97             content: '';
 98             width: 50px;
 99             height: 50px;
100             position: absolute;
101             left:0;
102             top:50%;
103             transform: translate(-50%,-50%);
104             background-color: green;
105             border-radius: 50%;
106         }
107         @keyframes rot {
108             0%{
109                 transform:translate(-50%,-50%) rotate(0deg);
110             }
111             100%{
112                 transform:translate(-50%,-50%) rotate(360deg);
113             }
114         }
115     </style>
116 </head>
117 <body>
118     <div class="sun"></div>
119     <div class="earth">
120         <div class="moon"></div>
121     </div>
122     <div class="venus"></div>
123     <div class="mars"></div>
124 </body>
125 </html>

运行效果:
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-11-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Animation定义动画
  • 二、动画属性
  • 三、案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档