steps(n, state)
steps(n, state)简介
steps
是animation动画的属性animation-timing-function
的一个值。 也就是用来控制动画运动方式的。
steps(n, state)
有两个值。
n
表示将单次运动分为几步来完成。而且从每一步都是直接从开始状态跳转到结束状态,而不是连续性的运动。
state
表示单次运动的状态。
参数介绍
这么说,会有点模糊,举个例子说说。
现在有一个盒子<div></div>
给他设置一个样式和动画
@keyframes move {
0% {margin-left: 0px;}
100% {margin-left: 200px;}
}
div {
width: 30px;
height: 30px;
background-color: pink;
margin-left: 0;
animation: move 5s steps(10, end) forwards;
}
move
动画总共就一步,即从0px
运动到200px
。结束
step中的第一个参数n
,就表示把这一步 拆分成几段来完成。
如例子所示,steps(10, end)
就表示把总共运动的200px
拆分成10段,分10次运动,每次运动是20px
相当于把
0% {margin-left: 0px;}
100% {margin-left: 200px;}
变成了
0% {margin-left: 0px;}
10% {margin-left: 20px;}
20% {margin-left: 40px;}
...
90% {margin-left: 180px;}
100% {margin-left: 200px;}
再说说参数state
state
就是动画开始前,动画是在第一段结束的开始位置
还是结束位置
state的值是start
,就表示动画开始前,动画就从第一段的结束位置开始。
也就是说, 动画是从10% {margin-left: 20px;}
的位置开始的。(可以简单这样理解)
state的值是end
,就表示动画开始把第一段结束的位置当作自己这一步的结束位置。
也就是动画从0% {margin-left: 0px;}
开始,第一步是到10% {margin-left: 20px;}
结束。
看个例子,发现不同
不用steps时的运动形式:
<!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% {margin-left: 0px;}
100% {margin-left: 200px;}
}
div {
width: 30px;
height: 30px;
background-color: pink;
margin-left: 0;
animation: move 5s forwards;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
用steps的运动形式:
<!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% {margin-left: 0px;}
100% {margin-left: 200px;}
}
div {
width: 30px;
height: 30px;
background-color: pink;
margin-left: 0;
animation: move 5s steps(10, end) forwards;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
参考文档
https://developer.mozilla.org/zh-CN/docs/Web/CSS/animation-timing-function
https://segmentfault.com/a/1190000007042048
https://www.cnblogs.com/yangpeixian/p/11227683.html