文章目录
- CSS 3动画
- 1 动画的基本使用
- 2 动画序列
- 3 动画常用属性
- 4 动画简写属性
- 5 速度曲线细节
CSS 3动画
动画(animation) 是CSS3中具有颠覆性的特征之一,可通过设置多个节点来精确控制一个或一组动画常用来实现复杂的动画效果。
相比较过渡,动画可以实现更多变化,更多控制,连续自动播放等效果。
1 动画的基本使用
制作动画分为两步:
- 先定义动画
- 再使用动画
用keyframes定义动画(类似定义类选择器)
@keyframes 动画名称{
0%{
width: 100px;
}
100%{
width: 200px;
}
}
元素使用动画
div{
/* 调用动画 */
animation-name: 动画名称;
/* 持续时间 */
animation-duration: 持续时间;
}
案例:将一个div从左边移动到右边
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
/* 定义动画 */
@keyframes move {
0% {
transform: translateX(0px);
}
100% {
transform: translateX(1000px);
}
}
div {
width: 100px;
height: 100px;
margin: 100px 100px;
background-color: orange;
/* 动画名称 */
animation: move;
/* 持续时间 */
animation-duration: 2s;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
2 动画序列
- 0%是动画的开始,100%是动画的完成。这样的规则就是动画序列。
- 在
@keyframes
中规定某项CSS样式,就能创建由当前样式逐渐改为新样式的动画效果。 - 动画是使元素从一种样式逐渐变化为另一种样式的效果。您可以改变任意多的样式任意多的次数。
- 请用百分比来规定变化发生的时间,或用关键词"from"和"to”,等同于0%和100%。
案例:简单的动画,一个div绕着屏幕走一圈
- 可以做多个状态的变化 keyframes 关键帧
- 里面的百分比要是整数
- 百分比代表的含义就是总的时间的划分
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
/* 定义动画 */
@keyframes move {
0% {
transform: translate(0px, 0px);
}
25% {
transform: translate(1000px, 0px);
}
50% {
transform: translate(1000px, 600px);
}
75% {
transform: translate(0px, 600px);
}
100% {
transform: translate(0px, 0px);
}
}
div {
width: 100px;
height: 100px;
margin: 100px 100px;
background-color: orange;
/* 动画名称 */
animation: move;
/* 持续时间 */
animation-duration: 2s;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
3 动画常用属性
4 动画简写属性
animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态:
例子:
animation: move 5s linear 2s infinite alternate forwards;
- 简写属性里面不包含
animation-play-state
- 暂停动画:
animation-play-state: puased;
经常和鼠标经过等其他配合使用 - 想要动画走回来,而不是直接跳回来:
animation-direction: alternate
- 盒子动画结束后,停在结束位置:
animation-fill-mode: forwards
- 有多个动画的话用逗号分隔开来就好,会按照顺序执行
5 速度曲线细节
animation-timing-function:
规定动画的速度曲线,默认是“ease”
steps(x)是离散的动画,分x步完成