animation-fill-mode:forwards
是使用正确的属性。是不是似乎工作,因为精灵图像背景有一个默认的background-repeat:repeat
,所以你认为你看到的最后帧实际上是第一个帧的重复的背景图像。
如果设置
background: url("http://files.simurai.com/misc/sprite.png") no-repeat
animation: play .8s steps(10) forwards;
@keyframes play {
from { background-position: 0px; }
to { background-position: -500px; }
}
和运行演示的最后一帧是当前空白 - 所以forwards
是做什么它应该做的。解决方案的第二部分是更改最终的to
和steps
CSS属性以正确定位背景。所以我们真的需要在-450px
停止的背景和使用9
步骤。
-webkit-animation: play .8s steps(9) forwards;
@keyframes play {
from { background-position: 0; }
to { background-position: -450px; }
}
See demo - 我只修复了Chrome属性。此外,这里是原始图像消失时的示例图像。
.hi {
width: 50px;
height: 72px;
background: url("http://i.stack.imgur.com/ilKfd.png") no-repeat;
-webkit-animation: play .8s steps(9) forwards;
-moz-animation: play .8s steps(10) infinite;
-ms-animation: play .8s steps(10) infinite;
-o-animation: play .8s steps(10) infinite;
animation: play .8s steps(9) forwards;
}
@-webkit-keyframes play {
from { background-position: 0px; }
to { background-position: -450px; }
}
@-moz-keyframes play {
from { background-position: 0px; }
to { background-position: -500px; }
}
@-ms-keyframes play {
from { background-position: 0px; }
to { background-position: -500px; }
}
@-o-keyframes play {
from { background-position: 0px; }
to { background-position: -500px; }
}
@keyframes play {
from { background-position: 0px; }
to { background-position: -450px; }
}
<div class="hi"></div>
非常感谢你;这工作完美。 –
sprite.png错过 – Neil
Thanks @Neil - 我已经更新并嵌入演示现在 – andyb