Ответ 1
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; }
}
См. демонстрацию - я установил только свойства 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>