CSS的动画
在本节,我们将学习keyframes动画。
1. 动画的基本使用
1. 定义动画
定义动画有两种写法:
-
简单定义方式
@keyframes 动画名 { /* from代表初始状态 */ from { /*property1:value1*/ transform: translate(0%); } /* to代表结束状态 */ to { transform: translate(200%); } }
-
完整定义方式
@keyframes 动画名 { /* 使用百分比来控制动画进程 */ 25% { /*property1:value1*/ transform: translateX(50%); } 50% { transform: translateY(100%); } 75% { transform: translateX(150%); } 100% { transform: translateY(200%); } }
1.2 元素应用动画
给元素添加animation属性,一般常用有三个属性:
- name 定义的动画名称
- time 动画持续时间
- liner 动画算法,infinite是动画无限循环
#box {
width: 100px;
height: 100px;
background-color: #f00;
position: absolute;
left: 0;
top: 100px;
/* name你定义的动画名称 time动画持续时间 liner动画算法 infinite动画无限循环*/
animation: trans-auto 2s linear infinite;
}
1.3 代码演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>动画</title>
<style>
#box {
width: 100px;
height: 100px;
background-color: pink;
position: absolute;
left: 0;
top: 100px;
/* name定义的动画名称 time动画持续时间 liner动画算法 infinite动画无限循环*/
animation: trans-auto 2s linear infinite;
}
@keyframes trans-auto {
/* from代表初始状态 */
from {
transform: translate(0%);
}
/* to代表结束状态 */
to {
transform: translate(200%);
}
}
</style>
</head>
<body>
<!-- 用@keyframes来做过渡效果 自动动画 无需触发 -->
<div id="box"></div>
</body>
</html>
1.4 演示效果
我们可以看到粉色的方块进行无线地平滑运动。
2. 动画的其他属性
2.1 animation-timing-function
设置动画的类型,常用的值如下:
- ease : 平滑动画(默认)
- linear : 动画线性过渡
- ease-in : 从慢到快
- ease-out :从快到慢
- ease-in-out :先慢再快后慢
- step-start : 等同于 steps(1, start)
- step-end : 等同于 steps(1, end)
- cubic-bezie ( number, number, number, number): 特定的贝塞尔曲线类型
制作贝塞尔曲线的网页https://cubic-bezier.com/#.17,.67,.83,.67
2.2 animation-iteration-count
指定动画的播放次数 ,有两个值:
- number :动画循环次数
- infinite : 无限循环
其他属性可以去MDN查看:https://developer.mozilla.org/zh-CN/docs/Web