在CSS3中新增了一个很有意思的东西,那就是动画,有了动画我们可以做很多的事情,让我为大家介绍一下动画吧!
本篇文章关于介绍动画,利用小球移动为你们介绍一下动画
默认样式:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>动画</title> <style> * { margin: 0; padding: 0; } .box { /* 绝对定位,子绝父相 */ position: relative; width: 1000px; height: 100px; border: 1px solid black; margin: 100px auto; } .ball { width: 100px; height: 100px; border-radius: 50%; background-color: pink; /* 绝对定位,接下来用定位来实现移动 */ position: absolute; top: 0; left: 0; } </style> </head> <body> <div class="box"> <!-- 小球 --> <div class="ball"></div> </div> </body> </html>
在我们使用动画前,我们需要定义关键帧,使用的语法:
@keyframes 名称 { }
/* 定义关键帧 */ @keyframes move { /* 第一种方法,from to */ /* from { left:0; } to { left: 900px; } */ /* 第二种方法,百分比的形式 */ /* 0% { left:0; } 100%{ left: 900px; } */ }
动画的使用语法与含义:
语法 | 含义 |
animation-name | 指定要绑定到选择器的关键帧的名称 |
animation-duration | 动画指定需要多少秒或毫秒完成 |
animation-timing-function | 设置动画将如何完成一个周期 |
animation-delay | 设置动画在启动前的延迟间隔 |
animation-iteration-count | 定义动画的播放次数 |
animation-direction | 指定是否应该轮流反向播放动画 |
animation-fill-mode | 规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式 |
animation-play-state | 指定动画是否正在运行或已暂停 |
使用动画让小球动起来
/* 给小球定义关键帧 */ @keyframes move { 0% { left:0; } 100%{ left: 900px; } }
跟着这一步步来自己动手试试吧,看只能看的懂理论,还是得要实践
一、animation-name
我们把名称给到我们小球的选择器当中
animation-name: move;
定义了动画名称还是做不出效果的所以我们用到了animation-duration
二、 animation-duration
动画指定需要多少秒或毫秒完成
单位使用s(秒)
animation-duration: 2s;
这样我们的小球就移动起来了,不过会有一个问题,但我们打开页面或者刷新页面的时候,动画就已经执行起来了,会闪现一段路程,所以我们要使用到延迟时间animation-delay
三、animation-delay
我们给小球添加延迟时间
/* 延迟2秒开始,单位用s */ animation-delay: 2s;
这样就解决了当我们页面还没加载完就开始执行了动画
四、animation-timing-function
是不是在尝试的过程中感觉小球滚动的速度有点奇特,一下慢一下快又一下慢的,这是animation-timing-function的属性值导致的,默认值是ease
属性值 | 简述 |
ease 默认 | 动画以低速开始,然后加快,在结束前变慢 |
ease-in | 动画以低速开始 |
ease-out | 动画以低速结束 |
ease-in-out | 动画以低速开始和结束 |
linear(常用) | 动画从头到尾的速度是相同的(匀速) |
steps | 指定了时间函数中的间隔数量( 步长 ) |
演示效果:
我们把小球的速度改成匀速
animation-timing-function: linear;
五、animation-iteration-count
定义动画播放的次数
可以使用number数字
我们想让动画执行2次
animation-iteration-count: 2;
在这当中我们有一个十分常用的属性
infinite(无限的)
这个属性可以反复执行动画
animation-iteration-count: infinite;
六、animation-direction
动画播放的方向
属性值 | 简述 |
normal 默认值 | 动画按正常播放 |
reverse | 动画反向播放 |
alternate | 动画在奇数次(1、3、5…)正向播放,在偶数次(2、4、6…)反向播放 |
alternate-reverse | 动画在奇数次(1、3、5…)反向播放,在偶数次(2、4、6…)正向播放 |
在使用alternate与alternate-reverse之前,我们需要让动画无限的播放或者是播放2次以上
animation-direction:alternate;
七、animation-fill-mode
属性 | 简述 |
backwards | 动画执行完毕后回到最初的位置 |
forwards | 动画执行完毕后停在最后一帧不动 |
animation-fill-mode: forwards;
八、animation-play-state
指定动画是否正在运行或已暂停
我用:hover为大家演示一下,不和其他属性一样写在一起
.ball:hover { animation-play-state: paused; }
注意看鼠标
代码总结:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>动画</title> <style> * { margin: 0; padding: 0; } .box { /* 绝对定位,子绝父相 */ position: relative; width: 1000px; height: 100px; border: 1px solid black; margin: 100px auto; } .ball { /* 绝对定位,接下来用定位来实现移动 */ position: absolute; top: 0; left: 0; width: 100px; height: 100px; border-radius: 50%; background-color: pink; /* 动画名称 */ animation-name: move; /* 所需时间 */ animation-duration: 2s; /* 延迟时间 */ animation-delay: 2s; /* 运动曲线 */ animation-timing-function: linear; /* 定义动画播放的次数 */ animation-iteration-count: infinite; /* 动画播放方向 */ /* animation-direction:alternate; */ /* 最后一帧停止不动 */ /* animation-fill-mode: forwards; */ } /* 鼠标经过小球停止,移出继续动 */ .ball:hover { animation-play-state: paused; } /* 给小球定义关键帧 */ @keyframes move { 0% { left: 0; } 100% { left: 900px; } } </style> </head> <body> <div class="box"> <!-- 小球 --> <div class="ball"></div> </div> </body> </html>
九、复合属性(常用)
我们可以直接使用animation
animation: 动画的名称 时间 运动曲线 开始时间 播放次数 是否反向播放 是否运用结束的样式 动画是否运行或暂停;
复合属性简写:
/* 要使用到forwards需要不无限循环 */ animation: move 2s 2s linear infinite alternate;
感谢大家的阅读,本人文笔有限,如有错误的地方,可以向我指出,感谢大家!