css3中animation的steps分步动画

article/2025/9/17 23:45:13

css的animation中,有一种描述动画变化速率的东西,例如常见的linear,ease-in,ease-out等,这些都是连续的变化,还有一种叫做steps的,它用来描述一种不连续的动画,也就是逐帧动画。

基本认识

steps的格式为:

 
  1. animation-timing-function : steps(number,[end | start])

steps的变化如下图:

这个图,我相信大家肯定都看过,但是这个图,很容易让人产生误解,steps中的number,指的是走了number步,但是实际上呢,却是将整个动画分成了number+1份。

例如number为3,它其实是将一个连续的动画,分成了4份:

它这种效果,其实有点像快照,在一个连续的动画上,截取均匀的4个位置快照。

它的第二个参数为start或者end,表示舍弃哪个截图:

如果为start,表示舍弃第一个截图:

那么只会播放第2,3,4个截图。

如果为end,表示舍弃最后一个截图:

那么只会播放第1,2,3个截图。

也就是说,动画被分成了n+1份,但是实际上,只走了n份,start代表去首,end代表去尾。

需要特别注意的是number为1的情况,它截取的是[0,1]位置的,我开始以为是截取的[0,1/2]位置,测试后发现并不是,切记,截取的是两头的快照:

steps-start等价于steps(1,start),只播放最后的快照;steps-end等价于steps(1,end),只播放开头的快照。

实例说明

为了说明这个问题,我做了个demo,让我们一起来仔细讨论下关于steps的问题,我们先看图:

steps动画(二维码)

上面是使用steps分布动画制作的效果,它的原图是这样的:

我们看到,图片上有6个小人,分别代表不同的动作,连在一起就是动图效果。

我们看上图,steps的number改设置为多少呢?上面说到,连续的动画实际被分成了number+1分,因此number应该为5,划分成6分:

css如下:

#rect{width:76px;height:125px;border:1px solid black;background:url('step.jpg') no-repeat left center;animation:move  infinite 2s steps(5,start) ;
}
@keyframes move{0%{background-position:0%;}100%{background-position:100%;}
}

一切看起来很正常,很完美,但是这样播放,我们会发现少了一帧,what?

虽然图片分成了6分,但是实际上只走了5步啊!!如果为start,那么走的就是2,3,4,5,6;如果为end,走的就是1,2,3,4,5。因此不管怎么走,其实都会少了一帧。

设置start

正确的做法是,将number设置为6,生成7个快照,如果设置为start,表示丢弃第一个快照:

#rect{width:76px;height:125px;border:1px solid black;background:url('step.jpg') no-repeat left center;animation:move  infinite 2s steps(6,start) ;
}
@keyframes move{0%{background-position:-22%;/*注意这里*/}100%{background-position:100%;}
}

这里需要注意,background-position需要向左移动,移动多少呢?background-position中的百分比为容器和背景图片差*percent,可以参考:css中background-position百分比原理。

这里容器宽高为一个小人,因此容器和背景差为6个小人,因此背景需要向左扩充1/6=16.7%,这里设置-22%,因此背景人物分布不均匀,因此稍微一动了一些。

设置为start,表示丢弃第一个快照,因此只播放2,3,4,5,6,7快照,可以完整播放。

设置end

我们还可以在尾部添加一个空白人物:

#rect{width:76px;height:125px;border:1px solid black;background:url('step.jpg') no-repeat left center;animation:move  infinite 2s steps(6,end) ;
}
@keyframes move{0%{background-position:0%;}100%{background-position:122%;/*注意这里*/}
}

注意,这里的background-position需要向右扩充16.7%左右,增加一个空白人物。

设置为end,丢弃最后一个,只播放1,2,3,4,5,6,可以完整播放。

number为其他的情况

steps中number为1,快照截取的是两头的,不是从中间截取的:

#rect{width:76px;height:125px;border:1px solid black;background:url('step.jpg') no-repeat left center;animation:move  1 2s steps(1,start) ;
}
@keyframes move{0%{background-position:0%;}100%{background-position:100%;}
}

例如上面的代码,将会播放的是图6,因为截取的有两个快照,1和6,1被舍弃了,因此只会播放6。

如果设置end,那么只会播放图1。

steps中number为2:

#rect{width:76px;height:125px;border:1px solid black;background:url('step.jpg') no-repeat left center;animation:move  1 2s steps(2,end) ;
}
@keyframes move{0%{background-position:0%;}100%{background-position:122%;}
}

有3个快照,分别是1,4,7。

如果设置为end,只会播放1,4;如果设置为start,只会播放4,7。

animation-fill-mode:forwards

这里需要注意一个问题,就是当我们只播放一次,并且设置播放停在最后一帧的时候,如果我们设置steps为end,就会停在丢弃的那一帧上:

例如上图,我们设置css如下:

#rect{width:76px;height:125px;border:1px solid black;background:url('step.jpg') no-repeat left center;animation:move  1 2s steps(5,end) ;
}
@keyframes move{0%{background-position:0%;}100%{background-position:100%;}
}

如果正常播放,第6帧会被丢弃掉,播放完,停在第一帧,但是如果你设置了forwrads:

#rect{width:76px;height:125px;border:1px solid black;background:url('step.jpg') no-repeat left center;animation:move  1 2s steps(5,end) forwards;
}
@keyframes move{0%{background-position:0%;}100%{background-position:100%;}
}

那么将会停在丢弃的第6帧上,这个需要特别注意。

转载于:http://www.qiutianaimeili.com/html/page/2021/06/2028tl9nhl7wfij.html


http://chatgpt.dhexx.cn/article/cFyuUarE.shtml

相关文章

超几何分布(Hypergeometric distribution)

超几何分布 百度解释 https://baike.baidu.com/item/超几何分布/4782968?fraladdin 通俗解释 超几何分布中的参数是M,N,n,超几何分布记作X~H(N,M,n) 。假如一共有100颗球,20颗为红球,80颗为白球,从中不放回地拿出10个球&#x…

机器学习小组知识点12:超几何分布(Hyper-Geometric Distribution)

超几何分布与二项分布的联系与区别 事实上,超几何分布和二项分布确实有着密切的联系,但也有明显的区别。   课本对于超几何分布的定义是这样的:一般的,若一个随机变量X的分布列为,其中,则称X服从超几何分布&#xf…

常见分布总结-高斯分布、伯努利分布、泊松分布、几何分布、beta分布

概率分布 概率分布是指用于表述随机变量取值的概率规律,包括连续分布和离散分布。 下面作了这些概率分布的一个思维导图。 文章目录 概率分布1、离散概率分布1.1、两点分布2.2、 二项分布1.3、几何分布1.4、超几何分布1.5、泊松分布2、连续概率分布2.1、均匀分布2.2、正太分布…

超几何分布的其他形式及其解释?

超几何分布定义 百度百科:超几何分布是统计学上一种离散概率分布。它描述了从有限N个物件(其中包含M个指定种类的物件)中抽出n个物件,成功抽出该指定种类的物件的次数(不放回)。称为超几何分布,…

geometric distribution and exponential distribution(几何分布和指数分布)

几何分布 分布函数均值和方差意义 表示经过k次实验才第一次得到正确的实验结果 比如抛硬币得到正面的需要抛的次数 指数分布 分布函数均值和方差意义 表示经过一段x之后,某件事第一次发生 比如经过x时间之后,公交车来的概率 比如餐厅从开业到第一个客人…

概率论的学习和整理9:超几何分布 (未完成!!!)

目录 1超几何分布 Hypergeometric distribution 1.1 超几何分布的定义 1.2 为什么叫超几何分布 1.3 超几何分布的公式 (2种公式) 1.3.1 超几何分布的公式1 (总体型公式) 1.3.2 超几何分布的公式2 (拆…

概率论与数理统计基础(二):常用离散分布 二项、泊松、超几何分、几何、 负二项分布

本文列举了常见的离散分布,关于它们的背景、概率分布列、数学期望与方差,以及与之相关的一些重要性质;比如几何分布的无记忆性、 二项分布的泊松近似、超几何分布的二项近似。。。。可作为离散分布的知识速查表。 目录 1. 二项分布b(n,p) …

如何理解几何分布与指数分布的无记忆性?

在经济学上,有一个概念是沉没成本,大概指的是已经付出的、且不可收回的成本。针对这个概念有一个常见的说法: 这句话的意思是,既然沉没成本不可收回,那么在做选择的时候就不应该考虑它。举一个简单的例子,买…

几何分布的期望公式的推导

随机变量服从几何分布 概率分布 期望 现在先求等差比数列和 ②-③, 并运用等比数列求和公式,可得 将④代入①得

统计学:几何分布、二项分布、泊松分布

一、几何分布 假设某种赌博游戏的胜率为0.2,那么意味着你玩第一次就胜出的概率为0.2。 那玩第二次才胜出呢?“玩第二次才胜出”就意味着玩第一次是失败的,而直到第二次才胜出,那么这件事发生的概率就是0.80.20.16。 那么第三次…

统计学 分布篇 - Hypergeometric Distribution(超几何分布)

超几何分布: 是 离散随机分布的一种. 它描述的是 从 n 中 拿 k 个成功的事件的概率( 不放回, 不放回意味着该事件是非独立事件), 其中在 N 中一共有 K 个成功事件. n 为 样本数量, k 为样本中成功的概率 N为 事件的总数量(population), K为 在N中 事件的总数量. note: 超几…

几何分布的期望与方差

几何分布的期望与方差 高中数学教科书新版第三册(选修II)比原来的修订本新增加随机变量的几何分布,但书中只给出了结论:(1),(2),而未加以证明。本文给出证明&…

概率统计14——几何分布

我家小朋友年方1岁半,家里每天上午都要出去遛小孩。现在小朋友有两项爱好,在家翻垃圾桶,出门捡烟头。 翻垃圾桶可以有效地限制,捡烟头可是防不胜防。 也许烟头能散发出特殊的能量波动,小区的绿化带和草坪上的大部分烟…

超几何分布定义

设有N件产品,其中有M(M≤N)件是不合格品.若从中不放回地抽取n(n≤N)件,设其中含有的不合格品的件数为X,则X的分布律为 称X服从参数为N、M和n的超几何分布,记为X~H&#x…

几何分布和二项分布有什么区别?

● 每周一言 越长大越渺小。 导语 各种常见的分布中,二项分布和几何分布经常同时出现,在前面讲泊松分布的时候也简单提到了二项分布。那么,几何分布是什么分布?和二项分布有什么区别? 几何分布 讲泊松分布的时候提…

几何分布定义

在伯努利试验中&#xff0c;记每次试验中A事件发生的概率P&#xff08;A&#xff09;p&#xff08;0<p<1&#xff09;&#xff0c;设随机变量X表示A事件首次出现时已经试验的次数&#xff0c;则X的取值为1&#xff0c;2&#xff0c;…&#xff0c;n&#xff0c;…&#x…

几何分布GeometricDistribution

几何分布 几何分布用于描述这种分布&#xff1a;独立事件的结果只有2个&#xff1a;”1和0“ 或”成功和失败“等&#xff0c;成功的概率为 p p p, 失败的概率为 q 1 − p q1-p q1−p; 第r次成功的概率为 P ( X r ) p ⋅ q r − 1 P(Xr)p\cdot q^{r-1} P(Xr)p⋅qr−1 即用…

MCS:离散随机变量——几何分布

Geometric 几何分布&#xff08;Geometric distribution&#xff09;是离散型概率分布。其中一种定义为&#xff1a;在 n n n次伯努利试验中&#xff0c;试验 k k k次才得到第一次成功的机率。详细地说&#xff0c;是&#xff1a;前 k − 1 k-1 k−1次皆失败&#xff0c;第 k …

概率论的学习和整理8: 几何分布

目录 前言 1 什么是几何分布 1.1 常规定义 1.2 另外一种定义 2 几何分布在概率分布中的定位 3 几何分布的 概率&#xff0c;期望&#xff0c;方差 4 为什么叫几何分布 &#xff08;几何等比&#xff09; 4.1 先需要了解算术平均数和几何平均数 4.2 第1&#xff1a;几…